ファイルを繰り返し、その内容を拡張子が同じでない新しいディレクトリのファイルに出力するにはどうすればよいですか?

ファイルを繰り返し、その内容を拡張子が同じでない新しいディレクトリのファイルに出力するにはどうすればよいですか?

これは非常に基本的な質問ですが、私はこれに慣れていません。

例:現在のディレクトリには、file1.txt、file2.txt、file3.txtを含むLooptestフォルダがあります。

その内容をlooptest_outフォルダにfile1.txt.test.txtなどという新しいファイルとして出力したいと思います。 (拡張子を削除しないと仮定)

だから、次のコードを試してみました。

for FILE in looptest/*; do cat $FILE > looptest_out/"$FILE.test.txt"; done

次のエラーが発生します。

testing_loops: line 17: looptest_out/looptest/file1.txt.test.txt: No such file or directory
testing_loops: line 17: looptest_out/looptest/file2.txt.test.txt: No such file or directory
testing_loops: line 17: looptest_out/looptest/file3.txt.test.txt: No such file or directory

問題は、$ FILEがファイルを含むディレクトリの拡張子を保持するため、最終的に存在しないディレクトリであるLooptest_out / looptestを見つけることです(両方のフォルダは現在ディレクトリにあります)。

したがって、デフォルトではディレクトリなしでファイル名を取得し、ファイルを新しい名前のバックボーンとして使用します。可能であれば、最後から「.txt」を削除する方法も知りたいです。私は"${file##*/}"andで作業しようとしましたが、"${file%.txt}".test.txt最終的には空の名前だけを指定しました。

どうぞよろしくお願いします!

ベストアンサー1

おすすめ記事