test*.txt
私はRed Hat Enterprise Linux Serverバージョン7.5(Maipo)で10日前6ヶ月前に指定されたすべてのファイルを見つけるスクリプトを作成しています。コピーした元のディレクトリには有効なファイルが含まれていますが、ファイルを移動しようとするとエラーが発生します。スクリプトとエラーメッセージは次のとおりです。なぜ失敗し、それを解決するにはどうすればよいですか?
find /INTER/f/d/o/ -type f -name "test*.txt" -mtime +190 -exec mv /INTER/f/d/o/"test*.txt" /INTER_ARCHIVE/f/d/o/ {} \;
mv: target /INTER/f/d/o/test1.txt is not a directory
mv: target /INTER/f/d/o/test2.txt is not a directory
mv: target /INTER/f/d/o/test3.txt is not a directory
mv: target /INTER/f/d/o/test4.txt is not a directory
また、ファイルがアーカイブディレクトリに7か月10日間アーカイブされた後に削除します。以下のスクリプトを使用すると、次のエラーが発生します。
find /INTER_ARCHIVE/f/d/o/ -type f -name "test*.txt" -mtime +400 -exec rm {};
find: missing argument to `-exec'
ベストアンサー1
最初のコマンド:
find /INTER/f/d/o/ -type f -name "test*.txt" -mtime +190 -exec mv /INTER/f/d/o/"test*.txt" /INTER_ARCHIVE/f/d/o/ {} \;
ここでは、パターンに一致し、十分に古いファイルを見つけたものに移動すると仮定します。命令mv
ビット形式が正しくありません。次のようにする必要があります。
-exec mv {} /some/destination/path \;
つまり、「見つかったファイル({}
)を任意のターゲットに移動する」ということです。
ファイルを移動する場所はコマンドで明確ではありませんが、作成するとファイルが移動されます。到着パス名が見つかりました。mv
複数のファイルをディレクトリ以外の場所に移動しようとすると失敗します。
2番目のコマンドでは
find /INTER_ARCHIVE/f/d/o/ -type f -name "test*.txt" -mtime +400 -exec rm {};
引数を正しく終了できませんでした-exec
。最後のビットは次のようにする必要があります
-exec rm {} \;
または単に
-delete
実装がfind
それをサポートしている場合。
皆さんも見てください」「find」の-execオプションについて」。