여러 디렉터리 이름 바꾸기

여러 디렉터리 이름 바꾸기

이름이 마지막 하위 디렉터리인 모든 디렉터리를 찾고 싶습니다.문서를 클릭한 다음 이름을 다음으로 바꿉니다.의사. 내 이름을 어떻게 바꿀 수 있나요?

나는 첫 번째 부분을 가지고 있습니다 :

find -type d -name 'doc' 

예를 들어 다음과 같은 디렉터리 경로를 반환합니다.

./foo/bar/doc

답변1

find . -depth -type d -name doc -exec sh -c 'mv "${0}" "${0%/doc}/Doc"' {} \;

답변2

zsh에서는 사용할 수 있습니다zmv기능일괄 이름 바꾸기 파일:

zmv '(**/)doc' '${1}Doc'

디렉터리 이름이 아닌 경우 doc다음을 추가하여 일치하지 않는지 확인하세요.글로벌 예선:

zmv -Q '(**/)doc(/)' '${1}Doc'

답변3

디렉토리를 대문자로 표시하고 4+를 사용하는 경우 bash다음을 수행해야 합니다.

find . -type d -name doc -print0 \
| while read -rd $'\0' file; do
    dname=$(dirname "$file")
    fname=$(basename "$file")
    mv "$file" "$dname"/"${fname^}"
  done

\0특이한 파일 이름을 올바르게 처리하려면 주의하십시오 .

고쳐 쓰다

~처럼jw013댓글에서 지적한 내용이 ${var^}예상대로 작동하지 않습니다. 경로를 디렉터리와 파일 이름으로 분리하고 ^연산자를 $fname.

그건 그렇고, 고마워요서두르다누락된 파이프를 추가하는 데 사용됩니다.

관련 정보