編集する:

編集する:

, , ... の下にある複数のサブフォルダにある拡張子を持つファイルをフォルダにコピーする必要があります.tmt(例:)。\main\allfiles\/individualfiles/1//individualfiles/2//individualfiles/abc//individualfiles/xyz//individualfiles/zzz/

私の問題は、あるフォルダからすべてのファイルをコピーした後にjavaコマンドを実行し、次のフォルダから再度コピーしてjavaコマンドを再実行する必要があることです。

ファイルごとにコピーします。最初のファイルをコピーしてから次のファイルをコピー/individualfiles/1/し、次の/individualfiles/1/フォルダに移動して/individualfiles/2/ファイルを個別にコピーします。

フォルダからすべてのファイルをコピーした後にjavaコマンドを実行する方法を教えてください。

答え1

複数のLinuxコマンドラインユーティリティを一緒に接続することでこれを行うことができます。

これらのこと、

find . -iname "*.tmt" | xargs dirname | uniq | xargs -I{} sh -c "cp -u {}*.tmt /destination/path && java command.jar"

どのように動作しますか?

  1. find . -iname "*.tmt".tmtこのファイルが実行される場所とサブフォルダのファイル名の種類を使用して、すべての相対パスを取得します。
  2. xargs dirname相対パスディレクトリのリストを残し、ファイル名を削除します。
  3. uniq重複ディレクトリの削除
  4. xargs -I{} sh -c "cp -u {}*.tmt /destination/path && java command.jar"shスクリプトを実行して、.tmtディレクトリリスト内のすべてのファイルを.tmtターゲットフォルダにコピーします。コピーが成功したら、java command.jarjavaコマンドで置き換える必要があるスクリプトを実行します。

編集する:

一度に1つのファイルをコピーし、各ファイルをコピーしてコマンドを実行することが目標であれば、実際には作業が簡素化されます。上記のコマンドは、1と4、または同様のものに縮小できます。

find . -iname "*.tmt" | xargs -I{} sh -c "cp -u {} /destination/path && java command.jar"

その後、.tmt拡張子が見つかったすべてのファイルを取得し、スクリプトを実行してfindjavaコマンドをコピーして実行します。

関連情報