특정 이름으로 모든 파일의 이름을 바꿉니다.

특정 이름으로 모든 파일의 이름을 바꿉니다.

"stringx"라는 이름을 가진 특정 파일을 찾고 이름(확장자는 아님)을 "stringy"로 바꾸려고 합니다. 따라서 기본적으로 stringx.txt 및 stingx.cs의 경우 stringy.txt 및 stringy.cs가 필요합니다. 다음 명령을 사용하여 이름 바꾸기 명령 정규식을 테스트해 보았지만 결과가 반환되지 않았습니다.

rename -n 'stringx./s/\*$stringy./\/' stringx.*

Centos에서 csh를 실행하고 있습니다. 내 정규 표현식이 틀렸을 수 있지만 이를 확인할 수 있는 결과는 볼 수 없습니다. stringx.txt라는 파일이 있는 것을 볼 수 있습니다. 다음과 같은 내용이 있습니다:

find ./ -name 'stringx.*'

답변1

rename stringx stringy stringx.*

rename일반적인 Linux 시스템에는 (적어도) 두 개의 유틸리티가 호출됩니다. Debian 및 파생 배포판(Ubuntu 포함)에는 구문이 다음과 같은 Perl 스크립트가 함께 제공됩니다.

rename 's/stringx/stringy/' stringx.*

CentOS를 포함한 다른 배포판에서는 rename위에서 작성한 구문과 같은 util-linux에서 가져온 것입니다. 이 유틸리티는 rename.ulDebian 및 해당 파생 제품에서 이 이름으로 사용할 수 있습니다.

csh가 tcsh를 의미한다고 가정하고 하위 디렉터리에서 반복하려는 경우(그러나 실제로는 1990년대 중반으로 가서 zsh로 전환하는 것을 고려하십시오):

set globstar
rename stringx stringy stringx.* **/stringx.*

관련 정보