![디렉토리에서 많은 수의 파일 이름을 0으로 채우는 방법은 무엇입니까?](https://linux55.com/image/75707/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%97%90%EC%84%9C%20%EB%A7%8E%EC%9D%80%20%EC%88%98%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%84%200%EC%9C%BC%EB%A1%9C%20%EC%B1%84%EC%9A%B0%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
방금 수백 개의 파일을 생성하고 이를 디렉토리에 저장하는 스크립트를 작성했습니다 ~/foo
. 이러한 파일 의 ~/foo/X-file
범위 X
는 . 내 문제는 파일을 번호순으로 보고 싶지만 파일이 0으로 채워지지 않는다는 것입니다. 따라서 이 디렉토리에는 다음이 포함 됩니다 . 이러한 파일을 앞에 0으로 채울 수 있는 방법이 있습니까?X=1
X=900
17-file
544-file
답변1
cd ~/foo
for i in *-file; do
num=${i%-file}
padnum=$(printf '%03d' $num)
mv -v "$i" "${padnum}-file"
done
이 라인을 따라 뭔가가 실행 가능해야합니다. 정확한 스키마와 디렉터리를 얻으려면 필요에 따라 수정하세요.
답변2
rename
Perl 유틸리티( 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