2

このコマンドラインが何をするのか、誰かが私に説明できますか:

find "$dir1" -regex ".*\.exe" -type f -exec cp "{}" "$dir2/my_executable.exe" \;

そして、このコマンドの最後にセミコロンがある理由を知りたいです。

どうもありがとう!

4

3 に答える 3

2

$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"ため、最後のファイルが見つかることになります。
于 2013-11-07T15:04:12.953 に答える
2

*.exeこれは、 という名前のディレクトリ内のすべてのファイルを検索しています$dir1。次に、それらのファイルのそれぞれが、$dir2/my_executable.exe毎回上書きの名前でコピーされます。したがって、最終的には、ディレクトリ内で最後に見つかったファイル$dir2/my_executable.exeと同じになります。.exe$dir

  1. -type f=>ファイルのみを検索
  2. -regex ".*\.exe"=>名前が含まれるファイルを検索.exeします
  3. -exec=> 見つかった各ファイルに対してコマンドを実行します
  4. {}=> 見つかったファイル名とパスを表す
  5. cp "{}" "$dir2/my_executable.exe"=> 見つかったファイルを$dir2/my_executable.exe \;にコピーします。exec ステートメントを終了します
于 2013-11-07T15:04:23.543 に答える
1

最後のセミコロンは、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.
于 2013-11-07T15:21:40.120 に答える