디렉터리에 있는 파일 이름의 하위 문자열 바꾸기

디렉터리에 있는 파일 이름의 하위 문자열 바꾸기

여러 수준의 하위 디렉터리를 포함하는 디렉터리가 존재합니다. 이 디렉토리 아래에는 이름에 공통 단어가 포함된 파일 세트가 있습니다. 예를 들어 .cc.cc파일 이름의 을 .cpp?

답변1

파일 "이름에 일반적인 단어가 포함되어 있습니다"라고 말할 때 파일이 확장자를 공유한다는 사실을 언급하고 있다고 가정합니다 .cc. 그렇다면 다음을 사용하십시오.자일스의 대답은 여기에 있습니다목표를 달성하기 위해 명령을 작성할 수 있습니다.

 find -type f -exec sh -c '
    for file; do [ "${file##*.}" = "cc" ] && 
    mv -- "$file" "${file%.cc}.ccp"; done
    ' -- {} +

바라보다SO에 대한 이 답변더 알아보기

답변2

zsh에서:

autoload zmv
zmv '(**/)(*).cc' '$1$2.cpp'

Bash ≥4에서:

for x in **/*.cc; do mv "$x" "${x%.cc}.cpp"; done

모든 셸에서:

find -name '*.cc' -exec sh -c 'for x; do mv "$x" "${x%.cc}.cpp"; done' _ {} +

더 간단하고 이전 시스템에 이식 가능하지만 약간 느립니다.

find -name '*.cc' -exec sh -c 'mv "$0" "${0%.cc}.cpp"' {} \;

설명은 이 답변을 참조하세요.

관련 정보