여러 수준의 하위 디렉터리를 포함하는 디렉터리가 존재합니다. 이 디렉토리 아래에는 이름에 공통 단어가 포함된 파일 세트가 있습니다. 예를 들어 .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"' {} \;