スクリプトを使用して変更されたファイルをお探しですか?

スクリプトを使用して変更されたファイルをお探しですか?

特定のディレクトリで過去N日間に変更されたファイルを見つける必要があります。ここで、Nはスクリプトの2番目の引数です。デフォルトでは、コマンドに2つの数値(パラメータ)を指定し、それを実行するスクリプトを実行する必要があります。

このコード行はファイルを正しく検索しますか?

find . -type f -mtime $2 -exec ls -l {} \;

ベストアンサー1

一種の。必要ありません-exec ls -l {} \;findコマンドはすでにファイルを一覧表示します。詳細を一覧表示するには、を使用できますfind -ls。どちらにも問題ありません-exec ls ...。したい場合はできますが、必要はありません。

-mtime N修正されたファイルが見つかります正確にN日前。詳細man find

  +n     for greater than n,

  -n     for less than n,

   n      for exactly n.

したがって、過去2日間に変更されたファイルを見つけるには、次のようにします。

find /target/path -mtime -2 -ls

検索はfind .現在のディレクトリで行われます。特定のディレクトリから検索するには、次のものを使用しますfind /path/to/dir。最初の引数がターゲットディレクトリの場合は、次のものを使用します(常に変数を引用する必要があります)。

find "$1" -mtime -"$2" -ls

また、-mtime24時間単位の「日」のみが処理されることに注意してください。コマンドを作成するときは、この点を考慮する必要があります。説明されているようにman find(これは同じです):-atime-mtime

ファイルはn * 24時間前に最後にアクセスされました。 findが24時間前にファイルに最後にアクセスした期間を計算したとき、小数部は無視されるため、-atime +1 と一致するには、ファイルに少なくとも 2 日前にアクセスする必要があります。

おすすめ記事