programing

디렉토리의 모든 파일 이름을 $filename_h에서 $filename_half로 변경하시겠습니까?

powerit 2023. 5. 3. 22:00
반응형

디렉토리의 모든 파일 이름을 $filename_h에서 $filename_half로 변경하시겠습니까?

아주 간단합니다.

이름 변경 방법

05_h.png
06_h.png

로.

05_half.png
06_half.png

적어도, 저는 그것이 간단하다고 생각하지만, 여러분이 이미 알고 있지 않다면 이런 종류의 것을 구글에 검색하는 것은 어렵습니다.

감사합니다.

외부 명령을 호출할 필요 없이 bash만 사용하면 됩니다.

for file in *_h.png
do
  mv "$file" "${file/_h.png/_half.png}"
done

추가 안 함#!/bin/sh

원라이너가 필요한 고객:

for file in *.png; do mv "$file" "${file/_h.png/_half.png}"; done

해라rename명령:

rename 's/_h.png/_half.png/' *.png

업데이트:

사용 예:

컨텐츠를 작성합니다.

$ mkdir /tmp/foo
$ cd /tmp/foo
$ touch one_h.png two_h.png three_h.png
$ ls 
one_h.png  three_h.png  two_h.png

테스트 솔루션:

$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png  three_half.png  two_half.png
for f in *.png; do
  fnew=`echo $f | sed 's/_h.png/_half.png/'`
  mv $f $fnew
done

또는 한 줄로:

for f in *.png; do mv "$f" "$(echo $f | sed 's/_h.png$/_half.png/g')"; done

당신은 순수한 bash 솔루션을 찾고 계십니까?많은 접근법이 있지만, 여기 하나가 있습니다.

for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done

이것은 현재 디렉터리에서 끝나는 유일한 파일을 가정합니다._h.png이름을 변경할 항목입니다.

훨씬 더 구체적으로.

for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}" ; done

그 두 예가 당신의 유일한 파일이라고 가정합니다.

일반적인 경우, 의 파일 이름 변경에 대해서이전에 설명한 바 있습니다.

사용renameperl로 작성된 유틸리티입니다.기본적으로 사용할 수 없을 수도 있지만...

$ touch 0{5..6}_h.png

$ ls
05_h.png  06_h.png

$ rename 's/h/half/' *.png

$ ls
05_half.png  06_half.png
for i in *_h.png ; do
  mv $i `echo "$i"|awk -F'.' '{print $1"alf."$2}'`
done

저도 비슷한 질문이 있었습니다.설명서에서 이름 바꾸기는 다음과 같이 설명되어 있습니다.

rename [option] expression replacement file

이렇게 사용할 수 있습니다.

rename _h _half *.png

코드에서 '_h'는 당신이 찾고 있는 표현입니다.'_half'는 대체할 패턴입니다.'*.png'은 가능한 대상 파일을 찾고 있는 파일 범위입니다.

이것이 c에 도움이 되기를 바랍니다.

배치 이름 변경 옵션을 사용하여 다른 접근 방식을 수동으로 사용할 수 있습니다.

파일 -> 파일 사용자 지정 명령 -> 배치 이름 변경을 마우스 오른쪽 단추로 클릭하면 h.를 반으로 바꿀 수 있습니다.

WinSCP 등을 사용하는 Linux 기반 GUI에서 작동합니다.

라이너 하나:
for file in *.php ; do mv "$file" "_$file" ; done

답변 세트가 완료되었지만 누락된 것을 하나 더 추가해야 합니다.

for i in *_h.png;
  do name=`echo "$i" | cut -d'_' -f1`
  echo "Executing of name $name" 
  mv "$i" "${name}_half.png"
done

파일 접두사의 이름을 바꿔야 했고 다음과 같은 솔루션을 사용하여 답을 찾았습니다.

for i in h_*; do mv ${i/#h_/half_}; done

패턴이 #로 시작하는 경우 확장된 매개 변수 값의 시작 부분에서 일치해야 합니다.패턴이 %로 시작하는 경우 확장된 매개 변수 값의 끝에서 일치해야 합니다.

부터man bash

사용rename유틸리티:

rc@bvm3:/tmp/foo $ touch 05_h.png 06_h.png
rc@bvm3:/tmp/foo $ rename 's/_h/_half/' * 
rc@bvm3:/tmp/foo $ ls -l
total 0
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 05_half.png
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 06_half.png

언급URL : https://stackoverflow.com/questions/7450818/rename-all-files-in-directory-from-filename-h-to-filename-half

반응형