파일 이름 확장자 앞에 텍스트 추가

파일 이름 확장자 앞에 텍스트 추가

파일 이름 끝부분, 확장자 앞에 텍스트를 추가하고 싶습니다. 지금은 작업 중이에요.

for f in *.shp; do echo $f_poly; done

출력은 다음과 같습니다

Quercus_acutifolia.shp_poly
Quercus_agrifolia.shp_poly
Quercus_corrugata.shp_poly
Quercus_cortesii.shp_poly
Quercus_costaricensis.shp_poly
Quercus_havardii.shp_poly
Quercus_hemisphaerica.shp_poly
Quercus_kelloggii.shp_poly
Quercus_knoblochii.shp_poly
Quercus_laceyi.shp_poly

그러기를 바랍니다.

Quercus_acutifolia_poly.shp
Quercus_agrifolia_poly.shp
Quercus_corrugata_poly.shp
Quercus_cortesii_poly.shp
Quercus_costaricensis_poly.shp
Quercus_havardii_poly.shp
Quercus_hemisphaerica_poly.shp
Quercus_kelloggii_poly.shp
Quercus_knoblochii_poly.shp
Quercus_laceyi_poly.shp

답변1

사용표준 POSIX 매개변수 확장:

for f in *.shp; do printf '%s\n' "${f%.shp}_poly.shp"; done

답변2

때로는 "이름 바꾸기"라는 도구가 설치됩니다.

rename 's/\.shp$/_poly.shp/' *shp

휴대가 불가능할 수도 있지만 사용하기 쉽습니다.

답변3

질문은 bash사용할 수 있으므로 외부 유틸리티가 필요하지 않기 때문에배쉬 정규 표현식:

for f in *.shp
do
    mv -v "${f}" "${f%.*}_MYSUFFIX.${f##*.}"
done

❗️경고하다: for f in *.ext아니요공백, 따옴표 또는 기타 예약 문자가 포함된 파일 이름을 손상시키므로 신뢰할 수 있습니다. 안전한 접근 방식은 다음과 같은 것을 사용하는 것입니다 find . -iname '*.shp' -exec sh -c 'mv -v "${1}" "${1%.*}_MYSUFFIX.${f##*.}"' _ {} \;. 재귀 순회가 필요하지 않은 경우 다음을 추가하십시오.-maxdepth 1

답변4

이것은 나에게 더 잘 작동합니다.

for f in *; do NEW=${f%.webm}_2016.webm; mv ${f} "${NEW}"; done

관련 정보