디렉토리에는 많은 *.html
파일 이 있습니다. 모두 이름을 바꾸고 싶습니다*.txt
어떻게해야합니까? bash 쉘을 사용합니다.
답변
더 나은 솔루션 (외부 호출이 아닌 bash 기능 만있는) 은 다른 답변 중 하나를 참조하십시오 .
다음은 시스템에 rename
프로그램 이 있어야 할 필요가 없으며 시스템에서 가장 자주 프로그램 을 갖 더라도 필요합니다 .
for file in *.html; do
mv "$file" "$(basename "$file" .html).txt"
done
편집 : 주석에서 지적했듯이 적절한 인용 부호가없는 파일 이름에는 공백이 없습니다 (이제 위에서 추가). 파일 이름에 공백이 없다는 것을 알고있는 파일에서 순수하게 작업 할 때 이것이 작동하지만 나중에 재사용 할 수있는 것을 쓸 때마다 적절한 인용을 건너 뛰지 마십시오.
답변
bash를 사용하는 경우 sed, basename, rename, expr 등과 같은 외부 명령이 필요하지 않습니다.
for file in *.html
do
mv "$file" "${file%.html}.txt"
done
답변
rename 's/\.html$/\.txt/' *.html
정확히 당신이 원하는 것을합니다.
답변
이것은 OSX에서 .txt에서 .txt_bak까지 나를 위해 일했습니다.
find . -name '*.txt' -exec sh -c 'mv "$0" "${0%.txt}.txt_bak"' {} \;
답변
사용하고 싶습니다 rename
:
rename -S .html .txt *.html
이것은 원하는 것을 정확히 수행합니다- 일치하는 모든 파일 의 확장자를에서 .html
로 변경합니다 ..txt
*.html
참고 : Greg Hewgill은 이것이 bash 내장이 아니라고 정확하게 지적합니다. 별도의 Linux 명령입니다. 만약 당신이 리눅스에서 무언가를 원한다면 이것은 잘 동작 할 것이다; 더 크로스 플랫폼이 필요한 경우 다른 답변 중 하나를 살펴보십시오.
답변
Mac에서 …
- 다음 을 수행하지 않은 경우 이름 바꾸기를 설치하십시오 .
brew install rename
rename -S .html .txt *.html
답변
우분투 사용자의 경우 :
rename 's/\.html$/\.txt/' *.html