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
- awk를 사용하여 파일 이름 주위에 따옴표를 추가합니다.
- sed를 사용하여 공백을 밑줄로 바꿉니다. 따옴표로 원래 이름을 인쇄합니다 (from awk); 다음 대체 이름
- 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
'IT story' 카테고리의 다른 글
Android : 비디오 섬네일을 표시 할 수 있습니까? (0) | 2020.09.17 |
---|---|
Python에서 확장자없이 파일 이름 가져 오기 (0) | 2020.09.17 |
80 포트에서 레일 s -p80을 실행하는 방법은 무엇입니까? (0) | 2020.09.17 |
주어진 시간 내 크론 작업 및 임의 시간 (0) | 2020.09.17 |
"xcode-select -switch"를 설정 한 후 Xcode가 작동을 멈 춥니 다. (0) | 2020.09.17 |