Mac OS X(10.7.2)에서 많은 파일의 이름을 바꾸고 싶습니다. rename
이 명령에 대한 Perl 패키지가 없습니다 .
내 파일 이름은 "T452-102456-0.png"와 같으며 "-0" 부분을 제거하고 싶습니다. 나는 내 자신의 php-cli 스크립트를 작성하여 이 작업을 수행할 수 있다는 것을 알고 있지만 더 간단하고 빠른 솔루션을 알고 싶습니다.
답변1
Bash 또는 Ksh를 조합하면 mv
이 문제를 해결할 수 있습니다.
for f in *.png; do mv -n "$f" "${f/-0}"; done
파일 이름의 첫 번째 대시 뒤에 "0"이 있을 수 있고 "-0"이 항상 점 앞에 오는 경우 표현식에도 점을 포함할 수 있습니다.
for f in *.png; do mv -n "$f" "${f/-0./.}"; done
하지만 이름 바꾸기 규칙은 간단하므로 다음 rename
과 같이 시작 하면유틸리티Linux패키지에서는 다음과 같이 할 수도 있습니다.
rename '-0.' '.' *.png
답변2
간단한 방법: 현재 디렉터리의 파일만
zsh 사용:
autoload zmv
zmv '(*)-0(.png)' '$1$2'
다른 쉘의 경우:
for x in *-0.png; do mv -- "$x" "${x%-0.*}.png"; done
개선 방법: 현재 디렉터리 및/또는 하위 디렉터리의 파일
zsh 사용:
zmv '(**/)(*)-0(.png)' '$1$2$3'
ksh93 사용:
set -o globstar
for x in **/*-0.png; do mv -- "$x" "${x%-0.*}.png"; done
bash ≥4의 경우 위와 같지만 shopt -s globstar
대신 command 를 사용하십시오 set
.
다른 쉘의 경우:
find -name '*-0.png' -exec sh -c 'for x; do mv -- "$x" "${x%-0.*}.png"; done' _ {} +
답변3
OSX의 Fish Shell에서:
for f in *.png; mv -n $f (basename $f -0.png).png; end
생선 껍질:https://fishshell.com/
답변4
다음 mmv
패키지가 있는 경우:
mmv '*-0.png' '#1.png'
(최신 버전)과 마찬가지로 rename
기존 파일을 덮어쓰지 않도록 합리적인 조치를 취합니다.