4

Я хотел бы перечислить файлы с 3 днями. Я нашел это в stackoverflow:

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' ' | grep 2012

Но я вроде не понимаю, что означает вся команда. Интересно, есть ли что-то короткое и простое для понимания.

2 ответа2

6

Это должно работать

find . -type f -mtime -3

объяснение

find         find files
.            starting in the current directory (and it's subdirectories)
-type f      which are plain files (not directories, or devices etc)
-mtime -3    modified less than 3 days ago

Смотрите man find для деталей


Обновить

Чтобы найти файлы, которые были последний раз изменены до определенной даты и времени (например, 08:15 20 февраля 2013 г.), вы можете сделать что-то вроде

  touch -t 201302200815 freds_accident
  find . -type f ! -newer freds_accident
  rm freds_accident

Видеть man touch (или info touch - тьфу!)

Это умеренно ужасно, и может быть лучше. Вышеупомянутый подход работает на древних и не-GNU Unix, а также текущих Linux.

0

Find поддерживает интервалы с аргументами -ctime и -mtime +/-.

например

$ for y in {07..14};do \
  for m in {01..12};do \
  for d in {01..30};do \
    touch -t 20$y$m${d}0101 $y$m$d.file ;done;done;done

$ find . -mtime +0 -mtime -$(( 3 * 365 + 3 )) |sort 
./100304.file
./100305.file
./100306.file
(...)
./130302.file
./130303.file
./130304.file

Если вы хотите, чтобы файлы создавались в промежутке между 3 годами и 3 днями до недели назад, вы должны использовать -mtime +7 -mtime -1098.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .