다음과 같은 일련의 파일이있는 폴더가 있습니다.
prefix_1234_567.png
prefix_abcd_efg.png
하나의 밑줄과 중간 내용 을 일괄 제거 하여 출력은 다음과 같습니다.
prefix_567.png
prefix_efg.png
관련성이 있지만 완전히 설명하지는 않음 :
_*_
공백 으로 바꾸는 자동화 워크 플로를 만들 수 있습니다 .
다음과 같은 일련의 파일이있는 폴더가 있습니다.
prefix_1234_567.png
prefix_abcd_efg.png
하나의 밑줄과 중간 내용 을 일괄 제거 하여 출력은 다음과 같습니다.
prefix_567.png
prefix_efg.png
관련성이 있지만 완전히 설명하지는 않음 :
_*_
공백 으로 바꾸는 자동화 워크 플로를 만들 수 있습니다 .
답변:
특정 경우에는 다음 bash
명령을 사용할 수 있습니다 ( bash
macOS의 기본 셸).
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
참고 : 파일 이름이로 시작될 가능성이있는 경우 파일 앞에 -
위치 --
[1] :
mv -- "$f" "${f/_*_/_}"
참고 : echo
연습 mv
실행을 수행하기 위해 앞에 추가됩니다 . 실제 이름 변경을 수행하려면 제거하십시오.
명령 줄에서 실행하거나 스크립트에서 사용할 수 있습니다.
"${f/_*_/_}"
bash
매개 변수 확장 의 응용 프로그램입니다 . (첫 번째) 하위 문자열 일치 패턴 _*_
이 literal로 대체되어 _
이름에서 중간 토큰을 효과적으로 잘라냅니다._*_
A는 패턴 (로도 글 로빙에 사용되는 와일드 카드 표현)이 아닌 정규 표현식 (실행 패턴에 대한 자세한 내용 man bash
및 검색 Pattern Matching
).배치 이름을 자주 바꾸는 파일을 발견하는 경우 Perl 기반 rename
유틸리티 와 같은 특수 도구를 설치하는 것이 좋습니다. macOS 에서는 다음과 같이 인기있는 패키지 관리자 Homebrew 를 사용하여 설치할 수 있습니다 .
brew install rename
다음은 맨 위에있는 명령에 해당하는 것입니다 rename
.
rename -n -e 's/_.*_/_/' *.png
다시 말하지만,이 명령은 드라 이런을 수행합니다. -n
실제 이름 바꾸기를 수행하려면 제거하십시오 .
bash
솔루션과 유사하게 s/.../.../
텍스트 대체를 수행하지만 in과는 달리 bash
진정한 정규 표현식 이 사용됩니다.[1] --
대부분의 유틸리티에서 지원하는 특수 인수의 목적은 Jacob C.가 언급했듯이 ,로 시작하는 옵션 처럼 보이 더라도 후속 인수가 피연산자 (값) 로 처리되어야 함을 알리는 것입니다 .-
.*
-> $1
) 를 사용하는 예 , 예 : Rename Foo bar S01E01 biz baz.ext
to S01E01.ext
:rename -n -e 's/.*(S[0-9]{2}E[0-9]{2}).*(\.[a-z]{2,4})/$1$2/' *
echo
드라이 런 에 사용하는 아이디어를 좋아하십시오 . 팁 고마워!
brew install rename
파일 이름을 바꾸려면 rename
유틸리티를 사용할 수 있습니다 .
brew install rename
예를 들어 현재 디렉토리의 모든 파일 이름에서 검색 문자열을 변경하려면 :
rename -nvs searchword replaceword *
변경 사항을 적용하려면 'n'매개 변수를 제거하십시오.
더 많은 정보: man rename
OS X
GNU bash
( x86_64-apple-darwin ) 버전 에는 이름 바꾸기 유틸리티가 포함되어 있지 않습니다.
brew install rename
rename -vs GLYCOPHORIN GLYCC *
후 450 개 이상의 파일 이름이 자동으로 변경됩니다. 그리고 매우 빠릅니다.
sed를 사용할 수 있습니다.
ls * | sed -e 'p;s@_.*_@_@g' | xargs -n2 mv
결과:
prefix_567.png prefix_efg.png
* 드라 이런을 먼저 수행 mv
하려면 마지막에echo
설명:
ls * | xargs -I % bash -c 'echo mv "%" "$(sed 's@_.*_@_@' <<<"%")"'
( echo
실제로 이름을 바꾸려면 제거하십시오 ).
사용 mmv
mmv '*_*_*' '#1_#3' *.png
sudo apt-get install mmv
.
brew install mmv
.