파일 이름에서 공백을 바꾸는 방법?


8

나는 그것을 다음과 같이 시도했다 :

rename 'bla bla .txt' blabla.txt

그러나 이것은 작동하지 않습니다.이 경우 올바른 구문은 무엇입니까?

답변:


15

rename하나의 파일 이름 만 바꾸는 데 사용해서는 안되며 대신 mv(1)을 사용하십시오.

또한 whitepsace를 피하려면 앞에 접두사를 붙이십시오 \.

"Ubuntu One"Ubuntu\ One

당신의 명령은

mv bla\ bla.txt blabla.txt
  • 백 슬래시는 bash에게 다음 문자가 문자 공간 등의 방식으로 \a' 예 를 들어 'bell ' \과 같이 특별하다고 말합니다

    자세한 내용은 man ascii(7) 참조

또는 올바른 명령을 사용하고 mv있으므로 공백이 많은 경우 파일 이름을 인용 할 수 있습니다.

mv "bla    bla.txt" blabla.txt

(이것은 bla\ \ \ \ bla.txt탈출 형식 일 것입니다)

  • bash에서 따옴표로 묶인 문자열 (작은 따옴표 나 큰 따옴표)은 단일 인수로 취급되는 반면 따옴표없는 문자열은 다음과 같이 여러 인수로 나뉩니다.

    • ["mv", "bla", "bla.txt", "blabla.txt", ]

    그리고 mv기대합니다 :

    • ["mv", "source", "destination", ]
  • 참고 : 'mv'와 파일 이름의 처음 몇 문자를 입력하고 누르면 TAB파일 이름의 이스케이프 버전이 제공되므로 이름을 빠르고 쉽게 바꿀 수 있습니다.


rename맨 페이지 의 예제에서 설명한 것처럼 정규식을 사용하여 파일 이름 바꾸기를 일괄 처리하는 데 사용됩니다 .

rename 's/\.bak$//' *.bak

"* .bak"와 일치하는 모든 파일에서 .bak (문자열 [$]의 끝 부분)를 제거합니다.


원본 파일 이름에 공백이 많은 경우 명령을 어떻게 볼 수 있습니까? 모든 단일 공백을 벗어날 필요가 없도록 간단한 정규식이 있습니까?
NES

많은 공백과 작은 v. 큰 따옴표를 해결하기 위해 답변을 업데이트했습니다.
Stefano Palazzo

작은 따옴표와 큰 따옴표 사이에는 차이가 있지만이 문제는 걱정할 필요가 없습니다. 그것의 정확한 세부 사항을 위해이 기사 를 보십시오
Stefano Palazzo

4

rename 은 대량 이름 바꾸기를위한 특수 명령입니다. 직관적으로 우리가 일반적으로 "이름 바꾸기"라고 부르는 것은 실제로 새로운 이름으로의 "이동"입니다.

mv 'bla bla .txt' blabla.txt

작은 따옴표와 큰 따옴표로 파일 이름을 쓰는 것의 차이점은 무엇입니까?
NES

4
큰 따옴표를 사용하면 변수를 확장하고 공정을 대체 할 수 있습니다. 작은 따옴표는 그렇지 않습니다. A=bla ; mv "$A $A .txt" blabla.txtbla bla .txt를 이동하지만 A=bla ; mv '$A $A .txt' blabla.txt실제로 "$ A $ A .txt"라는 파일을 찾습니다. 어느 쪽이든 귀하의 모범을 위해 일할 것입니다.
frabjous

1
rename "s/\s//g" "bla bla.txt"

s는 sed 대체 명령입니다.

\ s는 공백입니다.

당신은 아무것도 교체하지 않습니다. 다른 대체 문자열은 두 번째 슬래시 다음에옵니다.

g는 Global입니다. 즉, 모든 인스턴스를 교체합니다. g를 생략하면 첫 번째 인스턴스 만 교체됩니다.


이 명령은 모든 파일에서 공백을 밑줄로 바꿉니다.

rename "s/\s/_/g" *
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.