Linux Mint 로컬 폴더의 모든 파일에 접미사를 추가하는 방법은 무엇입니까?

Linux Mint 로컬 폴더의 모든 파일에 접미사를 추가하는 방법은 무엇입니까?

나는 이것을 시도했습니다 :

#!/bin/bash
# addsuffix <suffix> <files>

suffix=$1
shift
for f in "$@"
do
  extension=${f##*.}
  if [ -z $extension ]; then
    mv "$f" "$f$suffix"
  else
    mv "$f" "${f%.$extension}$suffix.$extension"
  fi
done

add_suffix가 이전 파일의 이름인 이 명령으로

sh add_suffix

하지만 오류가 발생합니다.

add_suffix: 5: shift: can't shift that many

뭐가 문제 야?

답변1

나는 쉘 스크립트에 무엇이 잘못되었는지에 대한 게시물 끝의 질문이 아니라 스레드의 질문에 대답하고 있습니다.

쉘 스크립트 외부에서 이 작업을 수행하려는 경우 mmv 명령을 사용하면 됩니다.

me@elman:~/test$ ls
file1  file1.out  file2
me@elman:~/test$ mmv -n "*" "#1.newsuffix"
file1 -> file1.newsuffix
file1.out -> file1.out.newsuffix
file2 -> file2.newsuffix

'-n'은 mmv에게 수행할 작업을 표시하지만 실제로 실행하지는 않도록 지시합니다(모의 실행). 두 번째 매개변수("*")는 mmv에 변경할 파일(소스)을 알려줍니다. 더 복잡한 일치 패턴이 있을 수 있지만 이 명령은 디렉터리에서 숨겨지지 않은 모든 파일을 가져와야 합니다. 마지막 매개변수 "#1.newsuffix"(대상)에서 #1은 소스 사양의 첫 번째 와일드카드 일치를 참조하고 이를 새 이름에 복사합니다.

실제로 변경하려면 "-n"을 제거하십시오. 매뉴얼 페이지는 매우 훌륭합니다.

관련 정보