새 파일로 연결하려는 2개의 파일이 있지만 다른 디렉터리(a, b, c, g 및 z)와 동일한 2개의 파일이 있으므로 루프를 사용하여 이 작업을 수행하고 싶습니다. 내 루프는 다음과 같습니다
for i in a b c g z
do
(cd $i/; for i in File_*_best3.txt *_new3.txt; do cat $i > combined.txt; done)
done
하지만 내 결과는 combined.txt
두 번째 입력 파일과 정확히 동일한 파일이므로 고양이가 작동하지 않습니다. 여기서 문제가 무엇입니까?
답변1
문제는 cat
실행될 때마다 출력 파일이 잘린다(비워진다)는 것이다. 리디렉션을 사용하고 있기 때문입니다 >
.
선택하다:
for d in a b c g z
do
(cd "$d"; rm -f combined.txt; for i in File_*_best3.txt *_new3.txt; do cat "$i" >>combined.txt; done)
done
또는
for d in a b c g z
do
(cd "$d" && cat File_*_best3.txt *_new3.txt >combined.txt)
done
나는 그것을 가정 File_*_best3.txt
하고 *_new3.txt
하나의 파일 이름과만 일치합니다.
답변2
다른 솔루션은 다음을 수행하지 않습니다 cd
.
for d in a b c g z; do
cat $d/{File_*_best3.txt,*_new3.txt} >$d/combined.txt
done