![루프에서 파일 이름 바꾸기](https://linux55.com/image/105070/%EB%A3%A8%ED%94%84%EC%97%90%EC%84%9C%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
루프가 있고 awk를 사용하여 일부 열을 선택하고 정렬한 다음 출력 파일의 이름을 새 이름으로 바꾸고 싶습니다. 내 awk와 sort는 잘 작동하지만 입력 파일 이름과 다른 파일 이름을 얻고 싶지만 그렇게 할 수 없습니다. 이 루프를 실행할 다른 디렉터리(a, b, c)가 있습니다. 명령은 다음과 같습니다:
for i in a b c
do
(cd $i/; for i in *_test2.txt; do awk '{print $2"_"$1}' $i | sort -V > ${i%.txt}3.txt; done)
done
파일 이름을 다음으로 변경하고 싶지만 *_test3.txt
루프에서 출력은 다음과 같습니다. *_test23.txt
어떻게 해야 합니까?
답변1
${i%.txt}
.txt
파일 이름에서 확장자 만 제거됩니다 $i
. 추가 문자를 선택하려면 다음을 사용하십시오 ${i%?.txt}
.
for i in {a,b,c}/*_test2.txt; do
awk '{ print $2 "_" $1 }' "$i" | sort -V -o "${i%?.txt}3.txt"
done