2015-12-26 5 views
2

Я знаю, что на этот вопрос много ответов. Тем не менее, я хотел бы знать, если это альтернативное решение будет работать:Найти и отсортировать файлы по дате, измененным

ls -lt `find . -name "*.jpg" -print | head -10` 

Я знаю, конечно, что это будет только дать мне первые 10 результатов. Причина, по которой я спрашиваю, заключается в том, что я не уверен, выполняется ли ls отдельно для каждого результата find или нет. Благодаря

+1

В обмене Unix и Linux есть аналогичный вопрос: http://unix.stackexchange.com/questions/29899/how-can-i-use-find-and-sort-the-results-by-mtime –

+0

Я также просто понял, что ставить 'head' внутри backticks не делает то, что я действительно хочу –

ответ

-1

В вашем решении:

  • ls будет выполняться после find оценивается
  • вполне вероятно, что find даст слишком много результатов для ls обработки, в этом случае вы можете захотеть посмотреть на команду xargs

Это должно работать лучше:

find . -type f -print0 | xargs -0 stat -f"%m %Sm %N" | sort -rn 

Три части команды к этому:

  • найти все файлы и печатать их путь
  • использование xargs для обработки (длинный) списка файлов и печати модификации UnixTime, читаемый человек время и имя файла для каждого файла
  • сортировки результирующего списка в обратном порядке

основной фокус в том, чтобы добавить численное UnixTime WHe n файлы были в последний раз модифицированы до начала строк, а затем отсортированы.

+0

Я понял проблему с моей командой выше. Не могли бы вы кратко объяснить ваше решение и как оно работает? Спасибо –

+0

см. Объяснение выше – Tilo

+0

Просто, чтобы убедиться, что я правильно понял, время модификации - это время, прошедшее с момента эпохи, до момента последнего изменения файла, поэтому большее время модификации означает недавно измененный файл, правильно? –

Смежные вопросы