â
디렉터리 이름의 이름 바꾸기 문자를 공백으로 바꾸려고 합니다 . 예를 들어, 이름이 how-â8093-to
.
다른 수정 사항을 포함하여 내가 사용한 명령은 다음과 같습니다.
find . -type d | xargs rename 's/â//'
하지만 여전히 작동하지 않습니다.
답변1
find
파일을 작업할 때 항상 이 -exec
함수를 사용하도록 노력해야 합니다. xargs
매개변수 인용과 관련된 많은 잠재적인 문제를 피할 수 있기 때문입니다. 이는 특히 파일 이름에 이상한 문자가 있는 경우 매우 중요합니다.
다음 명령을 시도해 보십시오:
find . -type d -name '*â*' -execdir rename 'â' '' {} \;
이는 이름에 â가 있는 파일을 이름별로 필터링하는 것을 제외하고 이전과 같이 모든 것을 찾습니다(일치하지 않는 파일에 대해 이름 바꾸기 명령을 실행하는 것은 의미가 없기 때문에). 그런 다음 파일이 rename
발견된 위치에서 개별적으로 실행합니다. .
답변2
파일에서 해당 문자를 제거하고 싶지만 그렇게 할 수 없습니까? mv how-
tabhow-8093-to
또는 을 입력할 수 있나요 mv how-?8093-to how-8093-to
?
답변3
문제를 해결하기 위해 보완 문자 클래스를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
find . -type d | xargs rename 's/[^A-Za-z0-9 ]//'
그러나 Ubuntu 10.04 시스템에서는 예제 파일 이름을 사용할 수 없습니다 rename
. Perl 설치나 로케일에 문제가 있는 것일까요?
답변4
어떤 버전의 이름 바꾸기를 사용하고 있는지 모르겠지만(저는 util-linux 버전을 사용하고 있습니다) Fedora 15에서는 다음과 같이 작동합니다.
rename 'â' '' how-â8093-to
이름 바꾸기 매뉴얼에서:
NAME
rename - Rename files
SYNOPSIS
rename from to file...
rename -V
DESCRIPTION
rename will rename the specified files by replacing the first occurrence of from in their name by to.
사용중인 sed 클래스 구문에 대해 아무것도 읽을 수 없습니다.