디렉토리에서 많은 수의 파일 이름을 0으로 채우는 방법은 무엇입니까?

디렉토리에서 많은 수의 파일 이름을 0으로 채우는 방법은 무엇입니까?

방금 수백 개의 파일을 생성하고 이를 디렉토리에 저장하는 스크립트를 작성했습니다 ~/foo. 이러한 파일 의 ~/foo/X-file범위 X는 . 내 문제는 파일을 번호순으로 보고 싶지만 파일이 0으로 채워지지 않는다는 것입니다. 따라서 이 디렉토리에는 다음이 포함 됩니다 . 이러한 파일을 앞에 0으로 채울 수 있는 방법이 있습니까?X=1X=90017-file544-file

답변1

cd ~/foo
for i in *-file; do
    num=${i%-file}
    padnum=$(printf '%03d' $num)
    mv -v "$i" "${padnum}-file"
done

이 라인을 따라 뭔가가 실행 가능해야합니다. 정확한 스키마와 디렉터리를 얻으려면 필요에 따라 수정하세요.

답변2

renamePerl 유틸리티( prename보다 원시적인 Linux 유틸리티가 아니라 종종 이라고 함) 가 있는 경우 :

rename -v 's/^([0-9]-)/00$1/; s/^([0-9]{2}-)/0$1/' *-file
  • 첫 번째 정규식은 단일 숫자를 두 개의 0으로 바꿉니다(2->002).
  • 두 번째는 두 자리 숫자를 0으로 바꿉니다(33->033).

답변3

관심 있는 디렉토리에서 실행하면 다음이 bash에서 작동합니다.

for x in [0-9]*-file ; do mv $x `printf %03d-%s ${x%-*} ${x##*-}` ; done

관련 정보