特定のディレクトリで過去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
また、-mtime
24時間単位の「日」のみが処理されることに注意してください。コマンドを作成するときは、この点を考慮する必要があります。説明されているようにman find
(これは同じです):-atime
-mtime
ファイルはn * 24時間前に最後にアクセスされました。 findが24時間前にファイルに最後にアクセスした期間を計算したとき、小数部は無視されるため、-atime +1 と一致するには、ファイルに少なくとも 2 日前にアクセスする必要があります。。