ファイルを操作する前に、ファイルが存在することを確認してください。

ファイルを操作する前に、ファイルが存在することを確認してください。

私のプロセスの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

関連情報