이름 바꾸기/찾기를 사용하여 파일과 디렉터리의 이름을 반복적으로 바꿉니다.

이름 바꾸기/찾기를 사용하여 파일과 디렉터리의 이름을 반복적으로 바꿉니다.

Centos 7을 사용하여 vmware에서 Linux를 배우기 시작했습니다. 저는 해당 폴더 내에 이미지 디렉터리와 여러 레이어의 파일 및 하위 디렉터리를 만들었습니다. 대부분의 이름에는 공백이 포함되어 있습니다. 하나의 명령을 사용하여 모든 파일과 디렉터리의 이름을 한 번에 바꾸고 싶습니다.

지금 제가 사용하고 있는 명령어는

find . -type f -exec rename "find" "replace" {} \;
&
find . -type d -exec rename "find" "replace" {} \;
검색은 공백이고 대체 문자는 "-"(하이픈)입니다. 나는 스택 교환에 대한 답변 중 하나를 보면서 아래 명령을 시도했습니다.
find . -iname "find" -exec rename "find" "replace" {} \;

답변1

find코 아래에 있는 디렉토리의 이름을 바꾸는 것이므로 -depth.

기본 CentOS 설치 시 제공되는 도구를 사용하여 파일 이름을 바꾸려면 쉘 및 mv.

find . -depth -exec bash -c '
  for filename do
    basename=${filename##*/}
    mv "$filename" "${filename%/*}/${basename// /-}"
  done
' _ {} +

답변2

zsh그러한 질문에 대한 일반적인 답변은 다음과 같습니다.

autoload zmv # best in ~/.zshrc
zmv -v '(**/)(* *)' '$1${2// /-}'

일반적으로 수동으로 수행하는 것(일반 파일만 해당)보다 파일의 우선순위를 깊게 지정하고 충돌이나 덮어쓰기를 더 잘 확인합니다.

관련 정보