이름 바꾸기 스크립트 빌드 [닫기]

이름 바꾸기 스크립트 빌드 [닫기]

각 폴더/디렉토리를 확인하고 "섹션"이라는 단어가 포함된 경우 폴더 제목의 이름을 바꾸는 스크립트를 작성하세요. 폴더 이름은 "섹션" 대신 "장"이라는 단어를 사용하여 바꿔야 합니다. 스크립트는 모든 하위 디렉터리를 확인하고 이름을 바꿀 때까지 각 디렉터리, 하위 디렉터리 및 하위 하위 디렉터리에서 실행되어야 합니다.

예를 들어:

supersectiondir-->subsectiondir-->lowersubsectiondir
다음과 같아야 합니다:
superchapterdir-->subchapterdir-->lowersubchapterdir

내 시도(위의 supersectiondir 디렉토리에서):

find /c/Users/cmd2/supersection -type d -exec sed -i 's/section/chapter/g' {} \; 

$ sh renaming.sh

sed: couldn't edit /c/Users/cmd2/supersection: not a regular file
sed: couldn't edit /c/Users/cmd2/supersection/subsection: not a regular file
sed: couldn't edit /c/Users/cmd2/supersection/subsection/lowersubsection: not a regular file 

답변1

rename도구는 이식성이 매우 낮습니다. RHEL/CentOS/Fedora 제품군 버전은 renameUbuntu 또는 Debian 버전과 공통점이 거의 없습니다.

나는 썼다답변은 두 버전의 사용 예를 제공합니다.rename곧 돌아오세요.

어떤 OS를 사용하고 있는지 밝히지 않으셨기 때문에 구체적으로 말씀드리기는 어렵습니다.이건 숙제니까 숙제는 너 스스로 해야 해그래서 어떤 운영 체제를 말해도 대답을 할 수 없습니다.

그러나 몇 가지 팁이 있습니다.

  • sed실행 대상콘텐츠중 하나텍스트 파일;파일 이름은 변경되지 않으며 디렉터리 이름도 변경되지 않습니다. 이 목적으로는 사용할 수 없으므로 작성한 명령에 오류가 발생합니다.
  • 귀하의 명령은 올바른 방향으로 진행되고 있습니다 find.
  • -name유용할 수 있으므로 및 -iname연산자를 찾는 것이 좋습니다 find(주어진 패턴과 일치하지 않는 파일의 이름을 바꾸려고 할 필요는 없습니다).
  • -exec( rename귀하의 OS에 적합한 버전)을 사용하는 것이 아마도 가장 쉽고 최선의 해결책일 것입니다.

답변2

이 도구를 사용할 수 있습니다 rename. 이 사용 사례의 예는 다음과 같습니다.

rename section chapter *

또는 귀하의 경우 find의 출력을 파이프할 수도 있습니다.

find . -type d -print | xargs rename section chapter

관련 정보