Відповіді:
В останніх версіях 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
варіанті.
Подивіться на цю відповідь ТА для отримання додаткових пропозицій: Як за допомогою "знайти" шукати файли, створені на певну дату?
Прикро, що немає жодного прямого способу зі стандартом find
. Останні версії систем find
GNU (наприклад, невбудований 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
У вас вже майже правильна команда, для версій find
якої не можна використовувати дати:
find /var/www/html/dir/ -mtime 27 | grep '\.php'
Загалом, для find
- п коштів менше , ніж , п коштів , що дорівнює + п означає «більше ніж». У традиційних find
є деякі винятки, але GNU find
та інші новіші версії, такі як на BSD / Mac OS X, виправили ці. (Майте це на увазі, якщо ви коли-небудь опиняєтесь в Solaris або іншій комерційній системі Unix.)
З zsh
вами може використовувати функціюage
для друку тільки імена файлів , які були змінені на певну дату:
вік автозавантаження print -rl - * .php (.e: вік 2011/02/08 :)
або, якщо ви хочете здійснити пошук рекурсивно:
вік автозавантаження септопт розширенийглоб print -rl - ** / *. php (.e: вік 2011/02/08 :)