Список всех файлов (с полными путями) в каталоге (и подкаталогах), порядок по времени доступа
Я хотел бы построить команду Linux, чтобы перечислить все файлы (с их полными путями) в определенном каталоге (и подкаталогах), упорядоченном по времени доступа.
ls может заказывать по времени доступа, но не дает полного пути. find дает полный путь, но единственный элемент управления, который у вас есть за время доступа, - это указать диапазон с -atime N (доступ как минимум 24 * N часов назад), чего я не хочу.
Есть ли способ заказать по времени доступа и получить полный путь сразу? Я мог бы просто написать script, но, похоже, должен быть способ сделать это со стандартными программами Linux.
Ответы
Ответ 1
find . -type f -exec ls -l {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7
Здесь будут найдены все файлы и отсортированы по дате, а затем по времени. Затем вы можете использовать awk
или cut
для извлечения имени дат и файлов из вывода ls -l
Ответ 2
вы можете попробовать:
ls -l $(find /foo/bar -type f )
- вы можете добавить другие параметры (например, -t для сортировки) в команду
ls
для достижения своей цели.
- также вы можете добавить критерии поиска в
find
cmd
Ответ 3
find . -type f | xargs ls -ldt
должен делать трюк, пока не так много файлов, которые вы нажимаете на команду, как ограничение аргументов, и создаете 2 экземпляра ls.
Ответ 4
find . -type f -exec ls -l --full-time {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7
Ответ Alex не работал у меня, так как у меня были файлы старше одного года, и сортировка перепуталась. Вышеприведенное добавляет параметр --full-time, который nuetralizes значения даты/времени и делает их сортируемыми независимо от того, насколько они стары.
Ответ 5
pwd | xargs -I % find % -type f