私のプロセスの1つは、ファイルが31日より古いかどうかを確認して処理します。
find /my/directory/*txt -mtime +31 -exec ls -l {} \;
ファイルが次の場所にある場合は問題/my/directory/
ありませんが、ファイルが存在しない場合はエラーが発生します。
find: `/my/directory/*txt': No such file or directory
私が発行した場合:
touch /my/directory/a_new_file.txt
そして同じコマンドを再実行してください。
find /my/directory/*txt -mtime +31 -exec ls -l {} \;
エラーはありません。
ファイルを使用する前に、そのファイルがディレクトリにあることを確認する方法はありますか?
答え1
そのようなことは起こりませんでしたfind
。最初のパラメータは、検索するディレクトリ(または個々のファイル名)です。パターンを与えたい場合は、-name
または-iname
同様の-regex
オプションを使用する必要があります。たとえば、
find /my/directory/ -name "*txt" -mtime +31 -ls
また、同じ作業をより効率的に行う検索オプションを-exec ls {} \;
使用するように変更しました。-ls
確認できる唯一の方法は、ls
どちらかを最初に実行することですがfind
、完全に無害なエラーメッセージを避けるには愚かなようです。
必要に応じて、以下を使用してディレクトリなしで一般ファイルを検索するように指定することもできます-type
。
find /my/directory/ -type f -name "*txt" -mtime +31 -ls
.txt
これにより、サブディレクトリのファイルを含むすべてのファイルが検索されます/my/directory
。必要でない場合は、最大深度を指定してください。
find /my/directory/ -maxdepth 1 -type f -name "*txt" -mtime +31 -ls