これは非常に基本的な質問ですが、私はこれに慣れていません。
例:現在のディレクトリには、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
最終的には空の名前だけを指定しました。
どうぞよろしくお願いします!