В современных системах вы можете использовать GNU stat
или GNU find
для извлечения размера без необходимости делать что-то ужасное, например, parse ls
.
К сожалению, вы не в современной системеНастало время сделать что-то ужасное.К счастью, размер - это одно из полей ls
, которое можно полу-надежно анализировать (при запуске его только для одного файла за раз), если вы работаете на платформе, которая не допускает таких сумасшедших вещей, как имена пользователей спробелы.
find . -type f -iname '*.pdf' -exec bash -c '
for name; do
read -r _ _ _ _ size _ < <(ls -l -- "$name")
printf "%s %s\n" "$size" "$name"
done
' _ {} + | awk -v c=100000 -f bin_packing.awk
Если синтаксис -exec ... {} +
не работает, вы можете изменить +
на \;
, чтобы сделать это медленнее, но более совместимым.