각 폴더/디렉토리를 확인하고 "섹션"이라는 단어가 포함된 경우 폴더 제목의 이름을 바꾸는 스크립트를 작성하세요. 폴더 이름은 "섹션" 대신 "장"이라는 단어를 사용하여 바꿔야 합니다. 스크립트는 모든 하위 디렉터리를 확인하고 이름을 바꿀 때까지 각 디렉터리, 하위 디렉터리 및 하위 하위 디렉터리에서 실행되어야 합니다.
예를 들어:
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 제품군 버전은 rename
Ubuntu 또는 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