, , ... の下にある複数のサブフォルダにある拡張子を持つファイルをフォルダにコピーする必要があります.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"
どのように動作しますか?
find . -iname "*.tmt"
.tmt
このファイルが実行される場所とサブフォルダのファイル名の種類を使用して、すべての相対パスを取得します。xargs dirname
相対パスディレクトリのリストを残し、ファイル名を削除します。uniq
重複ディレクトリの削除xargs -I{} sh -c "cp -u {}*.tmt /destination/path && java command.jar"
shスクリプトを実行して、.tmt
ディレクトリリスト内のすべてのファイルを.tmt
ターゲットフォルダにコピーします。コピーが成功したら、java command.jar
javaコマンドで置き換える必要があるスクリプトを実行します。
編集する:
一度に1つのファイルをコピーし、各ファイルをコピーしてコマンドを実行することが目標であれば、実際には作業が簡素化されます。上記のコマンドは、1と4、または同様のものに縮小できます。
find . -iname "*.tmt" | xargs -I{} sh -c "cp -u {} /destination/path && java command.jar"
その後、.tmt
拡張子が見つかったすべてのファイルを取得し、スクリプトを実行してfind
javaコマンドをコピーして実行します。