다음과 같은 파일 디렉토리가 있습니다.
file.1.png
file.2.png
…
file.10.png
…
file.1000.png
file.1001.png
…
숫자를 4자리로 채우는 방법은 무엇입니까? 다음과 같이 끝나야 합니다.
file.0001.png
file.0002.png
…
file.0010.png
…
file.1000.png
file.1001.png
…
답변1
이것은 또한 작동합니다:
for f in *.png; do
int=`basename $f .png | cut -d '.' -f 2`
new_name=`printf "file.%0.4i.png\n" $int`
[ ! -f $new_name ] && mv $f $new_name
done
답변2
간단하고 이식 가능한 스크립트를 원하는 경우 간단한 방법은 10001부터 계산을 시작하고 시작 숫자를 삭제하는 것입니다.
for x in file.*.png; do
n=${x%.*}; n=${n##*.}
n=$((n + 10000))
mv "$x" "${x%.*.*}.${n#1}.${x##*.}"
done
zsh를 통해 다음을 사용하십시오.즈마브그리고l
매개변수 확장 플래그:
setopt extended_glob
autoload zmv
zmv '(file).([0-9]##).(png)' '$1.${(l:4::0:)2}.$3'
답변3
다음을 시도해 보십시오:
for f in *.png
do
foo='0000'${f#file.} #remove "file." and prepend 0000
foo=${foo:(-8)} #last eight characters
echo mv $f file.$foo
done
출력에 만족하면 에코를 제거합니다.
답변4
여기에는 이미 많은 답변이 있지만 간단한 답변은 버릴 생각이었습니다.
rename 'file.' 'file.000' file.?.png
rename 'file.' 'file.00' file.??.png
rename 'file.' 'file.0' file.???.png
이 rename
유틸리티는 내가 아는 모든 배포판의 표준입니다. 여기에 있는 다른 솔루션만큼 화려하지는 않지만 간단하고 기억하기 쉽습니다.
첫 번째 줄은 .png file.1.png
로 변환 file.0001.png
하고 세 번째 줄 은 file.0100.png로 변환합니다. 4자리가 완성되었습니다.file.10.png
file.0010.png
file.100.png