Linux 이름 바꾸기 명령 줄 도구를 사용하여 디렉토리를 통해 재귀 적으로 검색하여 찾은 파일과 디렉토리의 이름을 변경합니다. 내가 겪고있는 문제는 rename 명령이 파일의 하위 디렉토리 이름을 바꾸고 동일한 파일의 상위 디렉토리 이름을 바꾸려고 시도한다는 것입니다. 하위 디렉토리의 이름이 변경되어 "해당 파일 또는 디렉토리 없음"이 표시되므로 실패합니다.
명령:
rename -f 's/foo/bar/' **
rename -f 's/Foo/Bar/' **
예를 들어, 다음은 'foo'를 'bar'로 바꾸고 싶은 원본 파일입니다.
파일:
/test/foo/com/test/foo/FooMain.java
실패:
Can't rename /test/foo/com/test/foo/FooMain.java /test/bar/com/test/foo/FooMain.java: No such file or directory
선호하는 파일 :
/test/bar/com/test/bar/BarMain.java
오류 메시지에서 상위 디렉토리의 이름을 바꾸려고 시도하고 있지만 그 시점에서 하위 디렉토리가 이미 변경되어 파일을 찾을 수 없음 오류가 발생한다는 것을 알 수 있습니다. 이 문제를 수정하는 rename 명령에 대한 매개 변수가 있습니까? 아니면 다른 방식으로 진행해야합니까?
나는 이것에 대해 다른 방식으로 진행할 것입니다. 특히 쉘 globstar 대신 깊이 우선 검색을 사용하여 **
예를 들어 GNU를 사용 find
하면 다음과 같습니다.
$ tree
.
└── dir
├── foo
│ └── baz
│ └── MainFoo.c
└── Foo
├── baz
└── MainFoo.c
5 directories, 2 files
그때
find . -depth -iname '*foo*' -execdir rename -- 's/Foo/Bar/;s/foo/bar/' {} +
결과
$ tree
.
└── dir
├── bar
│ └── baz
│ └── MainBar.c
└── Bar
├── baz
└── MainBar.c
5 directories, 2 files
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다