Вероятно, это было бы лучше: комбинация находки и оболочки
find / -type d -print0 | while read -r -d '' dir; do
ls -ltr "$dir" | sed '$!d'
done
Найти
выводит каждый найден каждый каталог, используя нулевой байт вместо новой линии для их разделения. Этот поток подается в , а цикл
, используя , с помощью
READ -D ''
, чтобы извлечь каждое имя каталога NULL-DELIMITED. Затем для каждого каталога все, кроме последней строки LS
, вывод удаляется SED
.
Ключ заключается в том, что в то время как
петля ITEERATED по каждому имени каталога, поэтому самый последний файл найден для каждого каталога.
Одна большая проблема с этим в том, что вывод ls -l
не показывает вам имя каталога, поэтому вывод, вероятно, не будет иметь большого смысла - вы видите файлы, но, не зная, какой каталог они появляются В.
Чтобы найти новейший файл в каждом каталоге, я бы сделал это:
find . -type f -printf "%h:%T@:%p\n" |
sort -t: -k1,1r -k2,2nr |
awk -F: '!seen[$1]++ {print $3}'
Найти
, чтобы получить , чтобы получить каталог, время мода и имени пути Сортировать
в группу по каталогу и сортировать Время awk
Чтобы распечатать путь, который является первым для каждого каталога Я бы использовал такую конструкцию в качестве отправной точки
find / -type d -print0 | xargs -0 -I'{}' sh -c 'ls -ltr {} | tail -1'
Caveat: ей не нравятся пустые каталоги (total 0
is output).