このコマンドラインが何をするのか、誰かが私に説明できますか:
find "$dir1" -regex ".*\.exe" -type f -exec cp "{}" "$dir2/my_executable.exe" \;
そして、このコマンドの最後にセミコロンがある理由を知りたいです。
どうもありがとう!
このコマンドラインが何をするのか、誰かが私に説明できますか:
find "$dir1" -regex ".*\.exe" -type f -exec cp "{}" "$dir2/my_executable.exe" \;
そして、このコマンドの最後にセミコロンがある理由を知りたいです。
どうもありがとう!
$dir
拡張子の付いたファイルを検索して.exe
にコピーするため$dir2/my_executable.exe
、$dir2/my_executable.exe
最後に見つかったファイルになります。
find "$dir1"
でファイルを検索します$dir1
。-regex ".*\.exe"
有名XXX.exe
。-type f
ファイルであること-exec .... {} \;
見つかったファイルでコマンドを実行します。cp "{}" "$dir2/my_executable.exe" \;
は、見つかったファイルを にコピーします"$dir2/my_executable.exe"
。常に同じである"$dir2/my_executable.exe"
ため、最後のファイルが見つかることになります。*.exe
これは、 という名前のディレクトリ内のすべてのファイルを検索しています$dir1
。次に、それらのファイルのそれぞれが、$dir2/my_executable.exe
毎回上書きの名前でコピーされます。したがって、最終的には、ディレクトリ内で最後に見つかったファイル$dir2/my_executable.exe
と同じになります。.exe
$dir
-type f
=>ファイルのみを検索-regex ".*\.exe"
=>名前が含まれるファイルを検索.exe
します-exec
=> 見つかった各ファイルに対してコマンドを実行します{}
=> 見つかったファイル名とパスを表すcp "{}" "$dir2/my_executable.exe"
=> 見つかったファイルを$dir2/my_executable.exe
\;にコピーします。exec ステートメントを終了します最後のセミコロンは、find コマンドの -exec オプションの構文の一部です。
-exec command ; Execute command; true if 0 status is returned. All following arguments to find are taken to be arguments to the command until an argument consisting of `;' is encountered. The string `{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in argu‐ ments where it is alone, as in some versions of find. Both of these constructions might need to be escaped (with a `\') or quoted to protect them from expansion by the shell. See the EXAMPLES section for examples of the use of the -exec option. The specified command is run once for each matched file. The command is executed in the starting directory. There are unavoidable security problems surrounding use of the -exec action; you should use the -execdir option instead.