#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
предоставляет вам журналы с датами изменений. Сортировка по секундам должна быть простой.