6

У меня есть несколько машин Linux Red Hat Linux, и я должен найти на них несколько файлов. Проблема в том, что у них много файлов и папок с 2004 года. И я не знаю, где именно искать эти файлы.

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

4 ответа4

11

Да, команда find может сделать это. Потребуются некоторые эксперименты, чтение и перечитывание man-страницы, чтобы заставить ее делать то, что вы хотите, но это потрясающая команда. Ниже приведены 2 примера:

find . -type f -ctime -2 -print0 | xargs -0 tar -rvf ~/dev_customer_attributes.tar
find . -mmin -400 > /tmp/files.txt

Первый find использует -type f для отображения только файлов. -type d для каталогов. -ctime -2 для файлов с созданным временем менее 2 дней, а затем добавляет их в архив tar. Я не могу вспомнить, когда я использовал эту команду или почему.

Вторая команда проверяет файлы и каталоги, измененные за последние 400 дней, и выводит этот список в files.txt Вот и отличная информационная страница, которую я только что нашел.


Например, в моем личном ноутбуке хранятся файлы, старые как 2010 год. И много, что новее тоже. Запустив find . -ctime -1000 -ctime +600 , я получаю листинг, как это:

./Pictures/Photos
./Pictures/Photos/2005
./Pictures/Photos/2005/08
./Pictures/Photos/2005/08/29
./Pictures/Photos/2005/08/29/DSCN1023.JPG
./Pictures/Photos/2009
./Pictures/Photos/2009/02
./Pictures/Photos/2009/02/23
./Pictures/Photos/2009/02/23/img_0001.jpg
./Pictures/Photos/2010
./Pictures/Photos/2010/01
./Pictures/Photos/2010/01/01
./Pictures/Photos/2010/01/01/DSCN2170.JPG
./Pictures/Photos/2010/01/01/DSCN2171.JPG
./Pictures/Photos/2010/06
./Pictures/Photos/2010/06/04
./Pictures/Photos/2010/06/04/img_0111.jpg
./Pictures/Photos/2010/06/04/img_0112.jpg
./Pictures/Webcam/2010-10-03-045227.jpg
./.mission-control
./.mission-control/accounts
./.mission-control/accounts/accounts.cfg

В этом случае в папке « Pictures » были скопированы устаревшие элементы до 2010 года, но это произошло с 400-дневным периодом 600 дней назад.

2
$ man find

find . -name '*.doc' -type f -mtime -28

Перечисляет все .doc-файлы ниже (и в) текущего каталога, которые имеют «mtime» (дата изменения) не более 28 дней.

2

найти то, что вы ищете

находить . -newermt "2012-05-01 00:00:00"

Это даст вам список файлов, которые соответствуют.
Вы можете добавить флаг -ls для получения дополнительной информации. Как это

находить . -newermt "2012-05-01 00:00:00" -ls

1

Я думаю, вам понадобится параметр -mtime команды find. Посмотрите, поможет ли это:http://www.cyberciti.biz/faq/howto-finding-files-by-date/

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