파일 이름을 오름차순으로 일괄 변경

파일 이름을 오름차순으로 일괄 변경

다음과 같은 일괄 파일이 있습니다.

$ 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

관련 정보