IT story

Linux-파일 이름의 공백 바꾸기

hot-time 2020. 9. 17. 18:56
반응형

Linux-파일 이름의 공백 바꾸기


폴더에 많은 파일이 있고 모든 파일 이름의 모든 공백 문자를 밑줄로 바꾸고 싶습니다. 이것을 어떻게 할 수 있습니까?


이렇게해야합니다.

for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done

Perl 스타일의 정규식을 사용하는 'rename'명령을 사용하는 것을 선호합니다.

rename "s/ /_/g" *

-n 플래그를 사용하여 테스트 실행을 수행 할 수 있습니다.

rename -n "s/ /_/g" *

사용 sh ...

for i in *' '*; do   mv "$i" `echo $i | sed -e 's/ /_/g'`; done

방아쇠를 당기기 전에 이것을 시도하려면 mv변경 하십시오 echo mv.


대체 작업을 재귀 적 으로 적용하려면 어떻게해야 합니까? 어떻게 하시겠습니까?

글쎄, 방금 답을 찾았습니다. 가장 우아한 솔루션은 없지만 (조건을 준수하지 않는 파일의 이름도 변경하려고 시도) 작동합니다. (BTW, 제 경우에는 밑줄이 아닌 '% 20'으로 파일 이름을 변경해야했습니다)

#!/bin/bash
find . -type d | while read N
do
     (
           cd "$N"
           if test "$?" = "0"
           then
               for file in *; do mv "$file" ${file// /%20}; done
           fi
     )
done

bash를 사용하는 경우 :

for file in *; do mv "$file" ${file// /_}; done

변수를 인용하십시오.

for file in *; do echo mv "'$file'" "${file// /_}"; done

실제 이름을 변경하려면 "echo"를 제거하십시오.


모든 파일이 .txt라고 가정하여 다음과 같이 시도하십시오.

for files in *.txt; do mv “$files” `echo $files | tr ‘ ‘ ‘_’`; done

문자열 (귀하의 경우 공백 문자)을 다른 문자열로 바꾸는 가장 쉬운 방법은를 Linux사용하는 것 sed입니다. 다음과 같이 할 수 있습니다.

sed -i 's/\s/_/g' *

도움이 되었기를 바랍니다.


다음은 또 다른 해결책입니다.

ls | awk '{printf("\"%s\"\n", $0)}' | sed 'p; s/\ /_/g' | xargs -n2 mv
  1. awk를 사용하여 파일 이름 주위에 따옴표를 추가합니다.
  2. sed를 사용하여 공백을 밑줄로 바꿉니다. 따옴표로 원래 이름을 인쇄합니다 (from awk); 다음 대체 이름
  3. xargs는 한 번에 두 줄을 가져 와서 mv에 전달합니다.

귀하의 대답은 파일 이름의 공백을 밑줄바꾸기에 있습니다 .


.py확장자 가있는 모든 파일의 이름을 바꾸려면 find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"

샘플 출력,

$ find . -iname "*.py" -type f                                                     
./Sample File.py
./Sample/Sample File.py
$ find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"
$ find . -iname "*.py" -type f                                                     
./Sample/Sample_File.py
./Sample_File.py

참고 URL : https://stackoverflow.com/questions/1806868/linux-replacing-spaces-in-the-file-names

반응형