it-swarm-ko.tech

배치 이름 바꾸기 파일

이미지가 가득한 디렉토리가 있습니다.

image0001.png
image0002.png
image0003.png
...

그리고 하나의 라이너로 이름을 바꾸고 싶습니다 (예 :).

0001.png
0002.png
0003.png
...

어떻게해야합니까?

157
Internet man

Bash 또는 기타 POSIX 호환 쉘을 사용하는 경우 :

for f in *.png; do
    mv -- "$f" "${f#image}"
done
110
W_Whalley

데비안과 파생어에서 Perl의 renamesed와 비슷하게 작동합니다 :

  rename -v 's/image//' *.png

대신 다음과 같이 작동하는 util-linuxrename도 있습니다.

  rename image '' *.png
113
Internet man

zmv

Zsh Shell에는 zmv라는 강력한 배치 이름 바꾸기 명령이 있습니다.

먼저 다음과 같이 zmv 명령을 활성화해야합니다 (~/.zshrc로 이동).

autoload zmv

기본 구문은 zmv PATTERN REPLACEMENT입니다. 패턴은 쉘 글로브 표현식입니다. 패턴의 일부는 괄호로 묶을 수 있습니다. 대체 텍스트는 $1, $2 등을 포함하여 패턴에서 N 번째 괄호로 묶은 그룹을 나타냅니다. 예를 들면 다음과 같습니다.

zmv 'image(*.png)' '$1'

또한 패턴에서 와일드 카드 문자와 일치하도록 $1, $2 등을 자동으로 정의하도록 zsh에 요청할 수 있습니다.

zmv -w 'image*.png' '$1.png'

나는 일반적 으로이 유스 케이스에 Nice and simple mmv ( man page ) 유틸리티를 사용합니다.

$ mmv "image*.png" "#1.png"

당신의 작업을 수행합니다.

대상 패턴의 #1는 소스 패턴의 와일드 카드와 일치하는 것으로 대체됩니다. 이것은 여러 개의 와일드 카드에서도 작동하며 파일 이름의 일부 순서를 변경하는 데 사용할 수 있습니다. 소문자를 대문자로 변환하는 등 복잡한 작업을 쉽게 수행 할 수도 있습니다.

인용하여 쉘에서 패턴을 보호하십시오.

34
Marcel Stimberg

POSIX sh for 루프

sed를 사용하여 이름 바꾸기

for i in image*jpg
do 
  mv -v "$i" "$(echo "$i" | sed -e 's/^\.\/image//' - )"
done
10
X Tian

나는 Perl을 좋아한다.

Perl -nlE '$old=$_; s/image//; qx(mv $old $_)'

파일을 다른 디렉토리로 복사하는 것과 같은 다른 작업에 동일한 패턴을 사용할 수도 있습니다.

Perl -nlE '$old=$_; s(image)(/path/to/new/dir/); qx(mv $old $_)'
6
gvkv

qmv

qmvrenameutils 명령은 탭으로 구분 된 두 개의 열이있는 파일 이름 목록을 표시하는 편집기를 엽니 다. 각 행은 파일 이름 중 하나를 표시하며 두 열에서 동일합니다. 오른쪽 열은 파일의 새 이름을 나타냅니다.
변경하려면 오른쪽의 이름을 편집하십시오. 이 예에서 :%s/... 또는 비주얼 블록 모드가 도움이됩니다.

편집기의 파일 이름

$ qmv *.png

에디터에서 :

image0001.png           image0001.png
image0002.png           image0002.png
image0003.png           image0003.png         
~                                             
~                                             
~                                             
~                                             
"/tmp/user/1000/qmvxWyVMs" 3L, 93C

오른쪽 열에서 이름을 편집하십시오.
(시각적 블록 모드를 사용하여 모든 줄에서 image 접두사 제거)

image0001.png           0001.png
image0002.png           0002.png
image0003.png           0003.png         
~                                             
~                                             
~                                             
~                                             
:wq

이름 변경 로그 :

image0001.png -> 0001.png
image0002.png -> 0002.png
image0003.png -> 0003.png

(예 : 우분투 : apt-get install renameutils)

6
Volker Siegel

재귀

image * png 파일을 쉽게 선택하고 파일 이름에서 줄 바꿈을 처리 할 필요가 없다고 가정

find . -name "image*.png" | while read f; do mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )"; done

안전, 공백, 줄 바꿈, 백 슬래시 등을 처리 할 수 ​​있음 :

find . -name "image*.png" | while IFS= read -r f; do 
   mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )"; 
done
3
X Tian

쉘 괄호 확장 사용 :

for N in {0001..1000}; do mv "{image,}$N.png"; done
2
αғsнιη

정규식 (Windows, Linux 및 OS X 지원)을 통해 파일/디렉토리의 이름을 안전하게 일괄 변경하기위한 실용적인 크로스 플랫폼 명령 줄 도구 인 brename ( https://github.com/shenwei356/brename ) ).

@ patrickDurusa 말했다 :

Linux에는 다양한 배치 파일 이름 바꾸기 옵션이 있지만 별명으로 인해 나에게 생긴 단점을 보지 못했습니다.

풍모:

  • 크로스 플랫폼. Windows, Mac OS X 및 Linux 지원.
  • 안전. 잠재적 충돌 및 오류 확인.
  • 파일 필터링. 정규식을 통한 파일 포함 및 제외 지원 find ./ -name "*.html" -exec CMD와 같은 명령을 실행할 필요가 없습니다.
  • 키-값 파일을 통한 해당 값으로 부분 일치 이름 바꾸기.
  • 오름차순 정수로 이름 바꾸기.
  • 파일과 디렉토리를 재귀 적으로 이름 바꾸기.
  • 건조 지원.
  • 다채로운 출력.

명령:

$ brename -f .png -p image
[INFO] checking: [ ok ] 'image0001.png' -> '0001.png'
[INFO] checking: [ ok ] 'image0002.png' -> '0002.png'
[INFO] checking: [ ok ] 'image0003.png' -> '0003.png'
[INFO] 3 path(s) to be renamed
[INFO] renamed: 'image0001.png' -> '0001.png'
[INFO] renamed: 'image0002.png' -> '0002.png'
[INFO] renamed: 'image0003.png' -> '0003.png'
[INFO] 3 path(s) renamed
1
Wei Shen

While 루프를 사용하여 POSIX sh

find 명령에서 이름을 읽습니다.

find . -maxdepth 1 -type f -name 'image*png' | while IFS= read -r f; do
  mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )"
done

파일에서 이름 읽기

while IFS= read -r f; do mv -v "$f" "$(echo "$f"|sed -e 's/^\.\/image//' - )"; done < flist
1
X Tian

Windows 및 linux 의 경우이 Perl script 가 수행합니다. 이 경우 :

$ rnm -l 's/^image//' '*.png'

스크립트는 디렉토리 에서 재귀 적으로 실행될 수 있으며 모든 디렉토리에 카운트를 추가 할 수도 있습니다.

$ rnm -r 's/^/$counter./' '/\.png$/'

UTF-8 문자도 Windows와 Linux 모두에서 올바르게 처리됩니다.

1
circulosmeos

이 도구를 사용할 수 있습니다 : rnm ( 웹 페이지 )

귀하의 경우 명령은 다음과 같습니다.

rnm -rs '/^image//' *.png

더 많은 예제/문서를 찾을 수 있습니다 here .

0
Jahid