Обычно это - плохая идея проанализировать вывод ls
. Но во встроенной системе, которая имеет нет stat
, никакой zsh, нет find -printf
, никакой жемчуг или другой большой язык сценариев, это - единственный способ отсортировать файлы по дате. Предположение, что имена файлов не содержат пробела и ни одного из \'"
(который xargs
искажения) — предположение, что Ваш исходный сценарий делает — можно использовать xargs ls -str
к дисплейным файлам, отсортированным по дате, и дисплей их размер в процессе.
find $DIRS -type f |
xargs ls -str |
while read kilobytes filename; do …
Обратите внимание, что размер отображен в килобайтах вместо байтов. Кроме того, это - дисковое место, занятое файлом, а не числом байтов в файле. Обычно, это число является размером файла, окруженным к следующему целому числу блоков, но это может быть меньше, если файл редок. В сценарии, который освобождает дисковое пространство, это, вероятно, что Вы хотите.
Существует большой протест со сценарием выше: это только распечатает свои результаты в правильном порядке, если количество файлов будет достаточно небольшим это xargs
может выполнить единственный вызов к ls
. Если существуют множественные вызовы ls
, каждый вызов отсортирует свои аргументы отдельно. Можно распечатать даты файла с ls
, но сортировка этого человекочитаемого вывода очень сложна. Лучшее решение, по крайней мере, обнаружить ошибочный случай состоит в том, чтобы заменить выводом find
в командную строку.
{ set -f; IFS='
'; ls -str $(find $DIRS -type f); } |
while read -r kilobytes filename; do …
Я не знаю ни о каких платформах или инструментах, которые помогут в выполнении этого. О лучшей вещи Вы найдете, несметное число примеров, которые присутствуют в Вашей системе наряду с различными учебными руководствами в Интернете, такими как этот назвал: Запись Вашей собственной Функции Завершения Bash.
Официальные документы должны, вероятно, быть всем, в чем Вы нуждаетесь все же.