#shell #find
#оболочка #Найти
Вопрос:
Для данного файла я хочу перечислить только подкаталоги, в которых он отображается. Я ищу файл с помощью:
find . -name <filename> -print
но это также выводит имя файла.
Я также хотел бы перечислить подкаталоги, отсортированные по дате создания. Я сортирую файлы следующим образом:
find . -name test.txt -printf "%T@t%Tc %6k KiB %pn" | sort -n | cut -f 2-
Кто-нибудь может помочь?
Ответ №1:
Вы ищете каталоги, так как насчет простого создания условий, соответствующих правильным каталогам?
find . -type d -exec test -f {}/test.txt ; -print
Это требует небольших дополнительных затрат на создание exec
для каждого файла, но в остальном это быстро и просто.
Однако перечисление ваших результатов, отсортированных по дате создания, может быть проблематичным. Если все имена каталогов просты — буквенно-цифровые, без специальных символов, таких как новые строки, — тогда вам может сойти с рук позволить ls
позаботиться о вещах:
ls -dt $(find . -type d -exec test -f {}/test.txt ; -print)
Но остерегайтесь страшного риска синтаксического анализа LS.
Помимо этого .. вы могли бы использовать stat
для сбора информации о данных для сортировки, но ее поведение будет зависеть от вашей операционной системы, или напишите что-нибудь на реальном языке программирования, который может обрабатывать данные файловой системы.