awk를 통해 실행하고 싶은 xyz 파일이 많이 있습니다. 각 파일에 "_s"를 추가하여 새 파일을 만들고 싶습니다. 기본 이름 구문을 올바르게 지정하는 데 몇 가지 문제가 있습니다. 이것이 내가 가진 것입니다.
for i in *.xyz; do awk -F" " '{printf $1 $2 $3}' > $(basename $i)_s.xyz ; done
답변1
처리된 파일의 출력을 새 파일에 쓰고 _s
파일 이름 부분에 확장자를 추가하는 올바른 구문은 다음과 같습니다.
for i in *.xyz; do awk -F" " '{printf $1 $2 $3}' $i > ${i%\.*}_s.xyz ; done
이 섹션에서는 마지막 항목부터 끝까지 문자열을 ${i%\.*}
잘라내어 확장자를 효과적으로 제거합니다.$i
.
귀하의 예에서는 를 사용할 수 있지만 ${i%\.xyz}
이는 덜 일반적입니다.
답변2
파일 이름을 "ls *.xyz"로 전달한 다음 $i의 이름을 바꿔야 합니다.
for i in `ls *.xyz`; do
mv $i $i_s
done