이것은 매우 기본적인 질문이지만 나는 이것에 익숙하지 않습니다.
예: 현재 디렉터리에는 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
결국 빈 이름만 지정하게 되었습니다.
도움을 주시면 대단히 감사하겠습니다!