다음과 같은 일괄 파일이 있습니다.
$ ls
Li1Fe1O2_11 Li1Fe2O3_8 Li1Fe3O4_2 Li1Fe3O4_5 Li2Fe1O3_16 Li2Fe2O4_12 Li3Fe1O4_19 Li3Fe1O4_22
Li1Fe1O2_14 Li1Fe2O3_9 Li1Fe3O4_3 Li1Fe3O4_6 Li2Fe1O3_17 Li2Fe2O4_13 Li3Fe1O4_20
Li1Fe2O3_7 Li1Fe3O4_1 Li1Fe3O4_4 Li2Fe1O3_15 Li2Fe2O4_10 Li3Fe1O4_18 Li3Fe1O4_21
이름을 다음과 같이 바꾸고 싶습니다.
enum-00132
enum-00133
enum-00134
...
나는 성공하지 못한 채 이름 바꾸기를 시도했습니다.
답변1
이것을 사용하십시오 :
c=132
for f in *; do
mv -v "$f" "enum-$(printf '%0*d' 5 $c)"
c=$(($c+1))
done
이것은 c=<your_starting_number>
귀하 132
의 질문과 같습니다. 그런 다음 for
현재 디렉터리의 모든 파일을 반복합니다. 이 명령은 각 파일에 대해 mv
호출됩니다 . 이 printf
유틸리티는 앞에 0이 붙은 새 파일 이름을 인쇄합니다. 마지막으로 카운터 변수는 $c
+1만큼 증가됩니다.
편집하다:디렉토리만 원하는 경우 다음을 사용하십시오( */
디렉토리만 사용하고 나머지는 변경하지 않음).
c=132
for d in */ ; do
mv -v "$d" "enum-$(printf '%0*d' 5 $c)"
c=$(($c+1))
done