정규식을 사용하여 여러 폴더의 이름 바꾸기

정규식을 사용하여 여러 폴더의 이름 바꾸기

제목에서 알 수 있듯이 저는 여러 디렉토리의 특정 부분을 한 번에 대체할 수 있는 명령/도구를 찾고 있습니다. 가급적 터미널에서 실행되는 것(원격 서버에서 Ubuntu를 사용하고 있습니다)을 찾고 있습니다. 폴더 구조는 다음과 같습니다.

Example.of.Structure[app]

Another.Example[app]

Third.Example.of.Structure[app]

그리고 모든 폴더의 이름을 바꾸고 싶기 때문에 폴더 이름에서 [app] 부분이 제거됩니다.

나는 기본적인 RegEx를 사용해 보았습니다. 대괄호와 그 안의 텍스트를 일치시킵니다.

내가 그것을 사용할 때 잘 작동하는 것 같습니다."찾아요"-하지만 명령에 어떻게 입력해야 할지 잘 모르겠습니다.

괄호 안의 텍스트(괄호 자체 포함)를 찾기 위해 내가 생각해낸 정규식은 다음과 같습니다.\[\w+\]

하지만 이것을 명령에 어떻게 입력합니까?

감사해요.

답변1

이를 위해 정규 표현식이 실제로 필요하지 않습니다. 간단한 쉘 글로브와 매개변수 확장을 사용하면 다음과 같은 작업을 수행할 수 있습니다.

$ for f in *\[*\]/; do echo mv "${f}" "${f/\[*\]}"; done
mv Another.Example[app]/ Another.Example/
mv Example.of.Structure[app]/ Example.of.Structure/
mv Third.Example.of.Structure[app]/ Third.Example.of.Structure/

( echo제안된 교체가 정확하다고 생각되면 삭제하세요.)

정규식 기반 도구를 사용하려면 Perl 기반 도구가 rename/prename확실한 선택입니다.

$ rename -n 's/\[\w+\]//' */
rename(Another.Example[app]/, Another.Example/)
rename(Example.of.Structure[app]/, Example.of.Structure/)
rename(Third.Example.of.Structure[app]/, Third.Example.of.Structure/)

( -n제안된 교체가 정확하다고 생각되면 삭제하세요.)

이 두 가지 모두 일치합니다.첫 번째패턴의 발생. 패턴이 다른 곳에서 발생할 가능성이 있는 경우 [app]일치 항목을 패턴 끝에 고정하는 방법을 살펴보세요. 보다문자열의 시작과 문자열 앵커의 끝

관련 정보