Я забыл имя файла, который находится в каталоге или одном из его подкаталогов. Я помню расширение файла (.nb) и приблизительно знаю, когда он был создан. Как мне вывести список всех файлов с этим расширением в текущем каталоге и подкаталогах вместе с датами их создания? Я использую Mac OS X.
решение1
Самый простой способ сделать это —зш, который установлен по умолчанию в macOS. Егоквалификаторы globпозволяют выбирать и сортировать файлы по временной метке и другим метаданным. Zsh не поддерживает время создания, но поддерживает время модификации и время изменения inode; одно из них, вероятно, совпадает со временем создания.
Здесь перечислены 100 ( [1,100]
) самых последних ( om
) обычных ( .
) файлов с .nb
расширением в текущем каталоге и его подкаталогах ( **/
):
zsh -c 'ls -ltr **/*.nb(.om[1,100])'
Здесь перечислены файлы, измененные между 7 и 14 днями назад:
zsh -c 'ls -ltr **/*.nb(.m+6m-14)'
решение2
Это должно дать вам желаемое.
find . -type f -name '*.nb'|xargs stat -f '%c %N'|sort
Объяснение
find . -type f -name '*.nb'
найти все файлы с расширением .nb.
xargs stat -f '%c %N'
распечатайте файлы с меткой времени unix в начале.
sort
отсортируйте его.
решение3
Для bash (не mac):
find . -type f -iname '*.nb'| xargs -d '\n' stat -c '%z %N'|sort
найти все записи типа «файл» в текущем каталоге и ниже, соответствующие шаблону
(-iname для игнорирования регистра)
передать его в xargs
(-d '\n' изменить разделитель на перевод строки, чтобы разрешить пробелы в именах файлов)
тогда к стати
(-c для выходного формата %z = последнее изменение статуса %N указанное имя файла)
и сортируем вывод
решение4
find -name '*.nb' -exec ls -rtl {} +
Покажет подробную информацию обо всех файлах, соответствующих шаблону, и отсортирует их от самых старых к самым новым (вы можете отсортировать их от самых новых к самым старым, удалив эту r
опцию из ls
команды).
Символ +
«в конце» означает, что вы выполняете команду в конце поиска, а не запускаете ее для каждого совпадения.
ПРИМЕЧАНИЕ: это будет работать только с разумным количеством совпадений. Если командная строка слишком длинная, ls
она будет разделена на несколько ls
, что приведет к нескольким отсортированным подмножествам, в то время как весь список не будет отсортирован правильно (спасибо @Gilles и @rudimeier за указание на это).