Существует ли команда, которая перечислит все файлы, которые я изменил в этом году?

Я хочу перечислить все файлы, которые я изменил в этом году и создаю резервную копию их. Кто-либо знает, существует ли команда для списка их?Заранее спасибо.

4
задан 22 November 2016 в 10:58

4 ответа

Если Вы хотите найти файлы, find команда является мощным инструментом. Можно просмотреть каталог и распечатать пути всех файлов, которые соответствуют некоторым тестам:

# find all files in /some/directory whose name starts with 'project_b'
find /some/directory -iname 'project_b*'

# find all files in /some/directory which are owned by user 'joe'
find /some/directory -user joe

# find all files in /some/directory whose name starts with 'project_b'
# but which are *not* owned by user 'joe'
find /some/directory -iname 'project_b*' -and -not -user joe

Для получения даты последнего изменения файла (или более точный, последнего изменения содержания файла), можно проверить на метку времени mtime. find имеет тест для mtime:

# find all files, whose mtime is less than 365 days back
find /some/directory -mtime -365

Это до сих пор дает Вам список всех файлов, которые Вы хотите скопировать. Теперь для самого резервного копирования. find приносит названную опцию -exec это применяет команду к каждому файлу, который она находит:

find /some/directory -iname '*.txt' -exec cp {} /somewhere/else \;

Если команда находки находит test.txt, other.txt и something.txt, -exec часть выполнилась бы:

cp test.txt /somewhere/else
cp other.txt /somehwere/else
cp something.txt /somewhere/else

Поскольку Вы, вероятно, видите, {} заменяется рассматриваемым файлом.

Править: Вероятно, необходимо найти лучшее решение, чем просто cp для самого резервного копирования, потому что cp просто скопировал бы каждый файл в /somewhere/else не сохраняя структуру каталогов.

В целом, специализированная резервная программа могла бы быть лучшим выбором.

17
ответ дан 23 November 2019 в 11:34

Принятие Вас хочет сохранить дату ограниченной текущим годом, который Вы могли использовать -newermt с датой.

Это посмотрит в текущем каталоге для любых файлов после 1-го ноября 2016 и скопирует их в цель / при поддержании структуры каталогов.

find . -newermt "2016-11-01 00:00:00" -exec cp --parents {} /target \;

Эти --parents добавленный к команде CP позволяет Вам копировать файлы maintaing папки, в которых она существует.

, Например...

ubuntu@ubuntu-xenial:~$ ls
percona-release_0.1-4.xenial_all.deb  t  t2  testdir  testfile2.vm  testfile.vm
ubuntu@ubuntu-xenial:~$ cp --parents t/output.txt testdir/
ubuntu@ubuntu-xenial:~$ ls testdir/
directory2  t

, Когда я скопировал t/output.txt в testdir/, это создало папку t в testdir/ и затем скопировало файл.

5
ответ дан 23 November 2019 в 11:34

Перечислять все файлы, измененные в этом году наряду с его деталями:

find / -mtime -365 -ls

Это перечислит все с прошлых 365 дней.

Для показа только регулярных файлов добавляют -type f к вышеупомянутой команде.

Для получения списка всех измененных файлов (с полным путем):

find / -mtime -365

можно скопировать эти файлы где угодно с помощью cp, или scp и т.д.

Добавляют -printf "%f\n" к концу команды для печати только имен файлов.

2
ответ дан 23 November 2019 в 11:34

Я использую некоторые псевдонимы

alias last-24-hours='sudo find * -ctime -1 -type f'
alias last-week='sudo find * -ctime -7 -type f'

, и можно сделать псевдоним

alias last-year='sudo find * -ctime -365 -type f'

, но он, вероятно, произведет очень длинный список.

-o-

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

-o-

альтернатива должна использовать инструмент, который может сделать инкрементное резервное копирование, например rsync. Это автоматически найдет что потребности быть добавленным или замененным в резервном копировании.

1
ответ дан 23 November 2019 в 11:34

Другие вопросы по тегам:

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