Отримання всіх файлів, які були змінені на певну дату


20

Чи можливо знайти всі phpфайли в певному каталозі, які були змінені на певну дату

Я використовую

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

щоб змінити файли протягом останніх 28 днів, але мені потрібні лише ті файли, які були змінені на наступну дату: 2011-02-08

Відповіді:


22

В останніх версіях find(наприклад, GNU 4.4.0) ви можете використовувати цю -newermtопцію. Наприклад, щоб знайти всі файли, які були змінені 2011-02-08

$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09

Також зауважте, що для пошуку файлів PHP вам не потрібно вводити файли в grep, оскільки пошук може зробити це для вас у -nameваріанті.

Подивіться на цю відповідь ТА для отримання додаткових пропозицій: Як за допомогою "знайти" шукати файли, створені на певну дату?


4

Прикро, що немає жодного прямого способу зі стандартом find. Останні версії систем findGNU (наприклад, невбудований Linux, Cygwin) та деякі * BSD мають такі параметри, як -newermtпорівняння дати файлу з прописаною датою .

Зазвичай find, ви можете порівняти дату файлу з поточною датою ( -mtime) або з фіксованим файлом. Поточна дата в цьому випадку зазвичай не корисна (вона відлічується від часу запуску findкоманди, тоді як для більшості програм потрібна дата календаря). Це дозволяє вам створювати тимчасові файли для визначення діапазону.

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp

2

У вас вже майже правильна команда, для версій findякої не можна використовувати дати:

find /var/www/html/dir/ -mtime 27 | grep '\.php'

Загалом, для find- п коштів менше , ніж , п коштів , що дорівнює + п означає «більше ніж». У традиційних findє деякі винятки, але GNU findта інші новіші версії, такі як на BSD / Mac OS X, виправили ці. (Майте це на увазі, якщо ви коли-небудь опиняєтесь в Solaris або іншій комерційній системі Unix.)


1

З zshвами може використовувати функціюage для друку тільки імена файлів , які були змінені на певну дату:

вік автозавантаження
print -rl - * .php (.e: вік 2011/02/08 :)

або, якщо ви хочете здійснити пошук рекурсивно:

вік автозавантаження
септопт розширенийглоб
print -rl - ** / *. php (.e: вік 2011/02/08 :)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.