Получить все файлы, измененные за последние 30 дней в каталоге

CentOS. Необходимо найти файлы, измененные за последние 30 дней, чтобы узнать, были ли заражены вредоносными программами.

Я пробовал это:

[email protected] [/home/someuser/public_html/]# find . -mtime +30
 -exec ls -l {} > last30days.txt \;

Но вместо последних 30 дней он, кажется, нашел все. 22 000 файлов.

Ответы

Ответ 1

Пара проблем

  • Вы не ограничиваете его файлами, поэтому, когда он находит соответствующий каталог, он будет перечислять каждый файл внутри него.
  • Вы не можете использовать > в -exec без чего-то вроде bash -c '... > ...'. Хотя > будет перезаписывать файл, поэтому вы хотите перенаправить все find в любом случае, а не каждый -exec.
  • +30 older, чем 30 дней, -30 будет изменен за последние 30 дней.
  • -exec действительно не нужен, вы можете перечислить все с различными параметрами -printf, но не знаете, чего хотите.

Что-то вроде ниже должно работать

find -type f -mtime -30 -exec ls -l {} \; > last30days.txt

Пример с -printf

find -type f -mtime -30 -printf "%M %u %g %TR %TD %p\n" > last30days.txt

Будет отображаться список файлов в формате "permissions owner group time date filename". -printf обычно предпочтительнее -exec в тех случаях, когда вам не нужно ничего осложнять, так как он будет работать быстрее в результате невозможности выполнения подсетей для каждого -exec. В зависимости от версии find вы также можете использовать -ls, который имеет аналогичный формат выше.