这是一个非常基本的问题,但我对此很陌生。
示例:在我的当前目录中,我有包含 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
但最终只是给出了一个空白名称。
帮助将不胜感激!