Как найти последние n новых файлов для каждой из нескольких каталогов

Я пытаюсь найти способы найти последние n новейших файлов для нескольких каталогов.

Проблема в том, что каталоги структурированы, но на самом деле не иерархически размещены, но у них есть конкретные имена. Пример:

./sensor -./motion --./2dMotion ---./saved ----./<name>.csv ---./processed ----./<name>.csv --./3dMotion ---./saved ---./processed -./temp --./saved ---./<name>.csv --./processed 

Проблема для меня заключается в следующем: я могу использовать параметр -regex в команде find, но это может дать мне только самые новые файлы после дальнейших команд для фильтрации в поисковых файлах новейшего файла, но это верно только для последнего файла, независимо от датчика, который используется.

Я пытаюсь создать выход, в котором будут отображаться последние n файлов, основанных на отметке времени.

Как я могу сделать это как можно проще?

3 Solutions collect form web for “Как найти последние n новых файлов для каждой из нескольких каталогов”

Для 10 последних регулярных .csv файлов в любой saved директории в системе GNU:

 find . -type f -regex '.*/saved/[^/]*\.csv' -printf '%T@:%p\0' | sort -rnz | awk -v RS='\0' -F/ '{sub(/[^:]*:/, ""); file = $0; NF--} ++n[$0] <= 10 {print file}' 

(файлы будут перечислены от самого нового до самого старого).

С помощью zsh вы также можете сделать что-то вроде:

 for dir (**/saved(ND/)) { newest=($dir/*.csv(D.om[1,10])) (($#newest)) && printf '%s\n' $newest } 
 find . -type d -exec bash -c 'echo "next dir: ${1}" ; ls -lt "$1" | grep ^- | head -n 5' bash {} \; 

самая новая из всего дерева

Это оказалось не ответом, так как это дает новейшие файлы всего дерева, но в любом случае это может быть полезно.

 find . -type f -printf "%T@ %p\n" | sort -nr | awk 'NR==6 { exit; } {$1=""; print; }' 

Используйте ls -lt |grep '^-' |head -n N просто в цикле.

 for DIR in /path/to/*; do if [ -d "$DIR"]; then ls -lt "$DIR/*.csv" |grep '^-' |head -n N fi done 

Где N – количество новейших файлов, и вы можете указать, как количество файлов отображается в результате для каждого каталога. см. man ls .

  • Преобразовать временную метку Unix в читаемый человеком формат в AIX
  • Calc добавляет '(апостроф) при импорте времени из CSV
  • Как скопировать 5 новейших файлов из одного каталога в другой и удалить старые копии
  • копировать файлы, измененные после определенной даты с помощью cp-переключателей
  • Команда ls без (скрытия) даты и времени
  • цитаты внутри backticks внутри цитат в ksh
  • Как добавить / добавить временную метку для вывода grep?
  • Нужно преобразовать столбец timestamp unix epoch в каждую строку с помощью sed или awk
  • Получить строки между двумя временными метками из файла
  • Извлечь временную метку из файла gzip
  • Как удалить файлы в одной папке, которая старше 60 дней в UNIX?
  • Linux и Unix - лучшая ОС в мире.