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