Как я могу выполнить команду ls
со всеми ее параметрами и рекурсивно перечислить все файлы в каталогах и отсортировать их по времени последнего изменения?
т.е. ls -lth для всех файлов в каталогах рекурсивно
Как я могу выполнить команду ls
со всеми ее параметрами и рекурсивно перечислить все файлы в каталогах и отсортировать их по времени последнего изменения?
т.е. ls -lth для всех файлов в каталогах рекурсивно
Во-первых, какой вариант Unix вы используете? Системы, основанные на BSD, будут иметь разные опции для ls
Система V.
Во-вторых, http://unixhelp.ed.ac.uk/CGI/man-cgi?ls перечисляет ключ -R
чтобы вызвать рекурсивный листинг, и -c
чтобы основывать его сортировку на ctime
или времени модификации.
Хитрость заключается в том, чтобы убедиться, что ваш вариант * nix использует версию ls
которая включает эти ключи.
Похоже, вам нужна глобальная сортировка, а не сортировка по каталогам, как вы получите с помощью ls -Rlth
.
Если общее количество файлов не слишком велико, это можно сделать с помощью команды find
чтобы собрать имена и передать их в ls
для сортировки:
find . -type f -exec ls -lth {} +
или в качестве альтернативы
find . -type f -print0 | xargs -0 ls -lth
(В некоторых старых системах команда find
не поддерживает ни -exec ... +
ни -print0
. В этом случае вы можете использовать -print
вместо -print0
и опустить -0
, но тогда он не будет работать с именами файлов, содержащими пробелы или другие специальные символы.)
Предостережение: если количество сортируемых файлов велико, их может быть слишком много, чтобы перечислить их в качестве аргументов для одной команды ls
. В этом случае ls
будет вызываться несколько раз, и сортировка будет правильной только в каждой группе файлов.