Linux 내장 도구를 사용하여 공백이 포함된 파일 이름을 일괄적으로 바꿉니다.

Linux 내장 도구를 사용하여 공백이 포함된 파일 이름을 일괄적으로 바꿉니다.

나는 다음과 같은 내용을 읽었습니다.일괄 이름 바꾸기, 접두사 변경내 파일을 사용해 보겠습니다.

Old이 경우에는 제거하고 다음으로 교체하고 싶습니다 .New

테스트 파일

01. Old Name.txt
02. Old Name.txt
03. Old Name.txt

1번 시도

for f in *.txt
do
    mv "$f" "New${f#Old}"
done

출력 1

New01. Old Name.txt
New02. Old Name.txt
New03. Old Name.txt

2번 시도

for i in *.txt
do
    mv ${i} ${i/#Old/New}
done

출력 2(변경 없음)

user@linux:~$ for i in *.txt
> do
> mv ${i} ${i/#Old/New}
> done
mv: target 'Name.txt' is not a directory
mv: target 'Name.txt' is not a directory
mv: target 'Name.txt' is not a directory
user@linux:~$ 

내 솔루션에 어떤 문제가 있나요?

원하는 출력

01. New Name.txt
02. New Name.txt
03. New Name.txt

답변1

  1. 변수를 참조하세요. 또한 앞에 ${i/Old/New}파운드 기호( #) 를 사용하지 마세요 Old. #파일 이름의 시작 부분에서 일치가 시작되도록 강제 하지만 로 시작하는 파일이 없고 Old모두 로 시작합니다 0.

    $ touch "01. Old Name.txt" "02. Old Name.txt" "03. Old Name.txt"
    $ for i in *.txt ; do mv -v "$i" "${i/Old/New}" ; done
    renamed '01. Old Name.txt' -> '01. New Name.txt'
    renamed '02. Old Name.txt' -> '02. New Name.txt'
    renamed '03. Old Name.txt' -> '03. New Name.txt'
    
  2. Perl rename유틸리티를 설치하고 사용합니다(예: sudo apt-get install renameDebian 및 그 파생 제품). 이는 DIY 일괄 이름 변경보다 훨씬 낫습니다.

관련 정보