Поиск и сортировка каталогов

#linux #shell #unix

#linux #оболочка #unix

Вопрос:

Мне нужно найти каталоги не старше 30 дней, а затем отсортировать их по дате (от самых новых к самым старым). Это моя команда:

 find /tmp/logs/ -maxdepth 1 -mindepth 1 -type d -mtime -30
  

Проблема, очевидно, в части сортировки 🙂

Комментарии:

1. разве вы не можете вызвать sort с результатами? find /tmp/logs/ -maxdepth 1 -mindepth 1 -type d -mtime -30 | sort ?

2. это сортирует каталоги, а не по времени

3. Это сортирует их только по алфавиту.

Ответ №1:

Если каталогов всего «несколько», вы могли бы передать find выходные данные в xarg ls -t , например:

 find /tmp/logs/ -maxdepth 1 -mindepth 1 -type d -mtime -30 | xargs ls -td1
  

Ответ №2:

Выполните поиск, указанный выше, затем используйте это в конце:

find -printf "%A@ %fn" | sort -rn

Это указывает find на вывод времени (в секундах) и имени файла. Вы можете сортировать по времени, и все готово. Передайте это в cut -d" " -f2- , чтобы сократить время, если вам нужно.

Ответ №3:

 for f in $(find . -maxdepth 1 -mindepth 1 -type d -mtime -30)
do
    echo -n $f " "
    stat -c %Y $f
done
  

предоставляет вам журналы с датами изменений. Сортировка по секундам должна быть простой.