Я хочу сортировать только файлы по датам обновления, включая подкаталоги.
Я узнал ls -lrtR | grep ^-
. но, кажется, не сортировать по датам обновления.
И мне нужно сохранить этот список в файл. Является ли это возможным?
Apr 01 2010 InsideDoosanServiceImpl.class // in A directory
Apr 08 2010 MainController.class // in B directory
Apr 07 2010 RecommendController.class // in B directory
Apr 01 2010 MainDao.class // in B directory
Я имею в виду, что весь список не упорядочен по дате, а сначала упорядочен по папке и упорядочен по дате.
Я хочу сначала упорядочить список по дате, включая все подкаталоги.
ls -lrt
.xargs
выполнения нескольких вызововls
, потому что тогда файлы будут правильно отсортированы только при каждомls
вызове, но им не хватает согласованного глобального порядка в выходных данных.С помощью ls -R будет возвращать каталоги, а -t сортировать по модификации. Однако он рекурсивно просматривает каталоги и применяет -t к каждому каталогу. Он не накапливает все файлы из всех каталогов, а затем сортирует. (Насколько я понимаю, последнее то что ты хочешь)
С помощью gnu find (1) вы можете указать формат вывода, включающий количество секунд с начала эпохи и имя файла, затем вы можете передать это в sort (1).
источник
GNU find
это помогает. Но ОП работает наAIX
машинах такGNU find
не был доступен для него.ls
нельзя накапливать файлы перед сортировкой.ls
это так быстро , по сравнению сfind
.ls
иfind
читает те же данные, поэтому я не могу представить причину, по которой ls должен быть значительно быстрее, чем find. В моей системе поиск в 5 раз быстрее (поиск примерно в полумиллионе файлов)find . -type f -printf "%T@ %Tc %p\n" | sort -n > out.txt
получая выходные данные, например1427913836.2330520210 wed 1 apr 2015 20:43:56 ./subdir/file.txt
.