루프에서 파일 이름 바꾸기

루프에서 파일 이름 바꾸기

루프가 있고 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

관련 정보