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