2015-06-09 3 views
4

Могу ли я сделать find и список файлов, в которых ctime и mtime не равны?Linux найти файлы, где mtime и ctime не равны

find . -type f -name '*.php' -ctime -5 MISSING_PART 

MISSING_PART: что-то вроде -mtime != -ctime

+1

Извините - я не знаю такого варианта в «find». Я предполагаю, что вы знаете [разницу между ctime и mtime] (http://www.linux-faqs.info/general/difference-between-mtime-ctime-and-atime), и что они обычно * одинаковы * , ПРЕДЛОЖЕНИЕ: попробуйте написать скрипт, используя 'stat | разрезать | diff': http://linux.die.net/man/2/stat. Вы можете форматировать вывод так, чтобы ctime находился в одном столбце; mtime в другом, затем «разбить» два столбца. – paulsm4

+0

Спасибо за подсказку. Эти два типично только разные, если кто-то явно установил mtime на что-то другое, чем то, что должно быть (как правило, хакер) – Tillebeck

ответ

6

Это можно получить с помощью команды stat. Команда stat используется для отображения состояния файловой системы или файловой системы. Опция -c используется для указания формата вывода этой команды. Формат %n используется для указания имени файла. %Y используется для указания времени последней модификации, так как эпоха и %Z определяет время последнего изменения с эпохи.

Команда find . -exec stat -c %n#%Y#%Z {} \; | awk -F# '{if ($2 != $3) print $1}' может использоваться для извлечения файлов, время изменения и время модификации которых не равны.

В -ctime n и -mtime n варианты find см последнего изменения или изменения времени с момента nчасов назад. Эта концепция диапазона времени не учитывается в этой команде.

+0

Это дает мне огромный результат, включая загрузку кеш-файлов. Но теперь у меня есть с чем работать. благодаря – Tillebeck