program story

mac os x 터미널 배치 이름 바꾸기

inputbox 2020. 8. 14. 07:41
반응형

mac os x 터미널 배치 이름 바꾸기


다음과 같은 일련의 파일이있는 폴더가 있습니다.

prefix_1234_567.png
prefix_abcd_efg.png

하나의 밑줄과 중간 내용을 일괄 제거하여 출력이

prefix_567.png
prefix_efg.png

관련이 있지만 완전히 설명하지는 않습니다 . 터미널을 사용하여 파일 이름을 일괄 적으로 변경하려면 어떻게해야합니까? OS X 터미널에서 파일 이름을 일괄 적으로 바꾸는 정규식


특정 경우에는 다음 bash명령을 사용할 수 있습니다 ( bashmacOS의 기본 셸).

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.가 언급했듯이 시작하는 옵션 처럼 보이 더라도 후속 인수가 피연산자 (값) 로 처리되어야 함을 알리는 것입니다 .-


파일 이름을 바꾸려면 rename유틸리티를 사용할 수 있습니다 .

brew install rename

예를 들어 현재 디렉토리의 모든 파일 이름에서 검색 문자열을 변경하려면 :

rename -nvs searchword replaceword *

변경 사항을 적용하려면 'n'매개 변수를 제거하십시오.

더 많은 정보: man rename


sed를 사용할 수 있습니다.

ls * | sed -e 'p;s@_.*_@_@g' | xargs -n2 mv

결과:

prefix_567.png prefix_efg.png

* 드라 이런을 먼저 수행 mv하려면 마지막에echo

설명:

  • e : 하나의 sed 명령에만 선택 사항입니다.
  • p : sed에 입력을 인쇄합니다.이 경우 이름을 변경하기 전에 원래 파일 이름이됩니다.
  • @ : sed를 더 읽기 쉽게 만들기 위해 / 문자를 대체합니다. 즉, sed s / search / replace / g를 사용하는 대신 s @ search @ replace @ g를 사용합니다.
  • _. * : 밑줄은 실제 '.'를 나타내는 이스케이프 문자입니다. 문자 0 번 이상 (정규식의 모든 문자와 반대)
  • -n2 : 매개 변수로 mv에 전달해야하는 2 개의 출력이 있음을 나타냅니다. ls의 각 입력 에 대해이 sed 명령은 2 개의 출력을 생성 한 다음 mv에 제공합니다.

나는 be90-01.png와 같은 파일 배치를 가지고 있었고 대시를 밑줄로 변경해야했습니다. 나는 이것을 잘 사용했다.

for f in *; do mv "$f" "`echo $f | tr '-' '_'`"; done

rename사용하여 명령을 설치할 수 있습니다 brew. 그냥 brew install rename하고 사용하십시오.


사용 mmv

mmv '*_*_*' '#1_#3' *.png

이 시도

for i in *.png ; do mv "$i" "${i/remove_me*.png/.png}" ; done

다른 방법이 있습니다.

for file in Name*.png; do mv "$file" "01_$file"; done

참고 URL : https://stackoverflow.com/questions/24102974/mac-os-x-terminal-batch-rename

반응형