확장자가 .bak 인 파일이 많은 디렉토리가 있고이를 각각에서 제거하려고한다고 가정합니다. 가장 간단한 방법은 무엇입니까? 내가 바라는 것을하는 명령을 의미한다 mv *.bak *
.
답변
와 zmv
Zsh에는 zmv
파일 이름 바꾸기 (또는 복사)에 대한 매우 간단한 인터페이스를 제공하는가 있습니다.
autoload zmv
zmv '(*).bak' '$1'
모든 괄호 쌍은 그룹을 캡처 한 다음 $1
, $2
등 으로 액세스 할 수 있습니다 . 다음은 몇 가지 더 예 .
이를 수행하는 또 다른 방법 은 간단한 이름 바꾸기 작업에 적합한 옵션 zmv
을 사용하는 -W
것입니다.
zmv -W '*.bak' '*'
zmv
항상 사용할 수 있는 가장 쉬운 방법 은에 설명을 입력하는 autoload zmv
것 ~/.zshrc
입니다.
배쉬 구문으로
문자열 조작과 함께 “일반”Bash 구문을 사용하려면 다음을 수행하십시오.
for f in *.bak; do mv -- "$f" "${f%.bak}"; done
와 rename
도구
rename
일부 Linux 및 OS X ~에서 사용할 수 있는 도구가 있습니다 brew install rename
.
rename 's/.bak$//' *
는 $
포함 할 일이 파일 이름의 중간 부분을 문자열의 끝을 캡처, 그리고 필요가있다 .bak
.
답변
주어진 훌륭한 답변 외에도 bash 또는 zsh와 같은 최신 쉘이없는 POSIX 호환 시스템에서 작동 하는 매우 오래된 방법이 있습니다.
for f in *.bak; do mv $f `echo $f | sed -e 's/\.bak$//'`; done