Zsh/AWK/...를 통해 파일 이름 앞에 숫자 순서를 추가하는 방법은 무엇입니까?

Zsh/AWK/...를 통해 파일 이름 앞에 숫자 순서를 추가하는 방법은 무엇입니까?

주어진 주문 앞에 번호 주문 양식 1-777을 추가하고 싶습니다. 이를 반복하여 Bash에서 변수를 증가시킬 수 있습니다. 그러나 Zsh 및/또는 Awk를 사용하여 수행하고 싶습니다. 아래는 예시입니다. 파일 이름

IMG_20161215_081850.jpg
IMG_20161215_081851.jpg
IMG_20161215_090559.jpg
IMG_20161215_090601.jpg
IMG_20161215_091308.jpg

구함

1.IMG_20161215_081850.jpg
2.IMG_20161215_081851.jpg
3.IMG_20161215_090559.jpg
4.IMG_20161215_090601.jpg
5.IMG_20161215_091308.jpg

운영 체제: 데비안 8.5

답변1

zsh를 통해 다음을 사용하십시오.zmv일괄 이름 바꾸기를 수행합니다. 먼저 실행 autoload -U zmv(에 넣고 .zshrc)한 다음

i=1
zmv 'IMG_*.jpg' '$((i++)).$f'

답변2

ls *.jpg | nl -s.

nl줄 번호가 추가됩니다. 번호와 데이터(이 경우 파일 이름) 사이의 구분 기호로 -s.a를 지정합니다 . .출력에서 선행 공백을 제거하려면 다음을 추가하면 됩니다.

ls *.jpg | nl -s. | sed 's/^ *//'

sed그러면 줄 시작 부분에서 0개 이상의 공백이 제거됩니다.

정말로 이 작업을 수행하고 싶다면 awk:

ls *.jpg | awk '{ print NR"."$0 }'

NR지금까지 파싱된 레코드 개수를 나타내는 내부 변수입니다.

파일 이름을 영구적으로 변경하려면 다음을 수행하십시오(Michael Vehrs).

ls *.jpg | nl -s. | sed 's/ *\([0-9]\+\)\.\(.*\)/\2 \1\.\2/' | xargs -n 2 mv

관련 정보