特定の日に変更された特定のディレクトリ内のすべてのphp
ファイルを見つけることは可能ですか?
私は使っています
find /var/www/html/dir/ -mtime -28 | grep '\.php'
過去28日以内に変更されたファイルを取得するには、次の日付に変更されたファイルのみが必要です:2011-02-08
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にパイプする必要がないことにも注意してください。これは、findが-name
オプションで行うことができるためです。
これを見てみましょうSOより多くの提案のための回答: 「検索」を使用して特定の日に作成されたファイルを検索する方法?
厄介なことに、標準のfind
を使用する直接的な方法はありません。 GNUシステム(例:非組み込みLinux、Cygwin))上のfind
の最近のバージョンと一部の* 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
の場合-nは以下を意味し、nは等しいを意味します+- nは「以上」を意味します。従来のfind
にはいくつかの例外がありますが、GNU find
やBSD/Mac OS Xなどの他の新しいバージョンでは修正されています(これを覚えておくと、 Solarisまたは他の商用Unixシステムで自分を見つけてください。)
zsh
を使用すると、 function age
を使用して、特定の日付に変更されたファイルの名前のみを出力できます。
autoload age print -rl-* .php(.e:age 2011/02/08 :)
または、再帰的に検索する場合:
autoload age setopt extendedglob print -rl-**/*。php(.e:age 2011/02/08 :)