найдите команду для новейших 500 файлов в дереве каталогов и также быть совместимым POSIX

Вы посмотрели на fbsplash?

Это легко, и не требует X11. И при этом это не требует исправления ядра.

Существует пакет в пользовательском репозитории Arch, который включает сценарий для сообщений о ходе выполнения проверки файловой системы и других функций...

2
04.06.2012, 09:38
2 ответа

Я вполне уверен, что Вам будет нужен к статистике каждый файл в каталоге для определения, которые являются 500 новейшими.

ls -t| head -n 500

2
27.01.2020, 22:15

Если Вы имеете в виду файлы в каталоге и всех его подкаталогах, чем-то как

find . -exec sh -c \
    $'echo "$(stat -c "%Y" "$0")\t$0"' {} \; | \
    sort -k1nr | cut -f 2 | head -n 500

должен добиться цели.

Разрушение его:

  • find . -exec выполняет команду на каждом файле ниже текущего каталога
  • sh -c "command" {} выполнения command для каждого файла это find видит, с $0 набор к имени файла
  • stat -c "+%Y" "$0" печатает время изменения файла, указанного в "$0"
  • sort -k1nr виды на основе первого поля в обратном числовом порядке
  • cut -f 2 полосы поле времени изменения, оставляя только имя файла
  • head -n 500 печать самое большее лучшие 500 строк

$'...' и \t то, потому что sort и cut использовать \t (т.е. Вкладка) как разделитель полей.

Чтобы быть совместимым POSIX, можно заменить

$'...\t...'

с

"...<press Ctrl-V, Tab>..."

К сожалению, stat не является портативным. Использование Linux stat -c "%Y" но использование FreeBSD и Mac OS stat -f "%m".

Если бы Вы действительно хотите портативный метод, было бы легче использовать Python, Perl или Ruby.

0
27.01.2020, 22:15
  • 1
    да, статистика была полезна, пока это ограничение POSIX не пришло. –  Sandeep 04.06.2012, 09:39

Теги

Похожие вопросы