특정 순서로 이미지 이름 바꾸기


8

이것은 내 문제입니다. 500 개의 이미지가있는 폴더가 있습니다.

1.jpg
2.jpg
3.jpg

등등..

해당 폴더를 복사했으며 이제 동일한 그림의 이름을 501에서 1000으로 바꾸어야하지만 다음과 같이 순서대로 바꾸십시오.

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

표준 이름 변경 명령을 사용할 때 :

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

501에서 1000까지 이미지를 주문하지만 모두 흩어져 있습니다.

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(그들은 올바른 순서이지만 혼합되어 있습니다)

아마도 내가 누락 된 명령 일 것입니다 ...


2 개의 변수 i 및 j mv $ i.jpg $ j.jpg를 사용하고 변수를 증가시킵니다.
Panther

감사합니다. 알아낼 수 있기를 바랍니다. 검색했지만 답을 찾지 못했습니다.
Painkiller

원래 이름이 궁금한 점은 무엇입니까? 원래 번호를 + 500으로 바꾸어야합니까?
Jacob Vlijm

네 야곱 +500 나는 bodhi가 나에게 말한 것을 쓰려고 노력하고 있지만 나는 lnux에서 그렇게 좋지 않다. 나는 위의 이름 바꾸기 명령을 작성하기 위해 내 자신을 죽였다 : D
Painkiller

내 가난한 노트북은 atm을 많이 차지하지만 만족스러운 답변이 나오지 않으면 (내가 의심합니다 :)) 관리하지 않으면 오늘 밤 작은 파이썬 스크립트를 게시 할 것입니다.
Jacob Vlijm

답변:


7

Xfce의 기본 파일 관리자 인 Thunar를 사용해보십시오 . 매우 가볍고 편리한 대량 이름 바꾸기 도구가 제공됩니다. 터미널에서 다음 명령을 실행하여 Thunar를 설치할 수 있습니다.

sudo apt-get install thunar

아마도 우분투 소프트웨어에서도 설치할 수있을 것입니다.

유틸리티 사용법

  1. Thunar를 설치 한 후 대량 이름 바꾸기 유틸리티를 시작하십시오 .
  2. + 아이콘을 클릭 하고 이름을 바꾸려는 파일을 올바른 순서로 추가하십시오.
  3. 선택한 파일 목록 바로 아래에있는 드롭 다운 상자를 클릭하고 번호 매기기를 선택하십시오 . 옆에있는 상자를 클릭하고 이름 만을 선택하십시오 .
  4. " 시작 : "상자에 501을 입력하고 " 텍스트 : "상자를 비워 두십시오 . 새 이름 열 에서 변경 사항을 미리 볼 수 있습니다.
  5. 변경 사항을 적용하려면 파일 이름 바꾸기 버튼을 클릭하십시오 .

이외에도 번호 매기기 이 유틸리티는 다음과 같은 작업을 지원합니다 :

  • 날짜 / 시간 삽입
  • 삽입 / 덮어 쓰기
  • 문자 제거
  • 검색 및 교체
  • 대문자 소문자

고마워 당신은 MVP입니다! 또한 텍스트 형식을 텍스트-숫자로 변경해야한다는 점만 추가하면됩니다. (다른 사람이 이것을 사용하는 경우)
Painkiller

2
간단한 작업을 수행하기 위해 fm을 전환하는 것은 나에게 과도하게 보입니다. 간단한 노틸러스 스크립트 확장을 작성하면 fm을 전환하는 데 시간이 덜 걸립니다.
Jacob Vlijm

1
@JacobVlijm Nautilus와 함께 대량 이름 바꾸기 도구로 Thunar를 사용하고 있습니다. Thunar는 매우 가벼워서 노틸러스 나 다른 파일 관리자와 충돌하지 않는 것 같습니다.
pomsky

4
두 번째 파일 관리자를 원하지 않으면 pyrenamer완벽하게 작동하며 GUI가 출력 전후에 비교하기를 원할 때 이층 이름 바꾸기에 사용하는 것입니다.
Tom Brossman 17 년

13

find명령은 '디렉토리'순서로 파일을 찾습니다 ( 23.jpg, 66.jpg, ...). 당신은 |sort찾기 후에 넣을 수 있습니다.

그러나 귀하의 방법은 너무 복잡합니다.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 

3
for i in {1..500}; do ...꿀벌이 쉬웠을 것입니다.
David Foerster


5

당신이 올바르게 묻는 것을 이해했다면 기본 이름 바꾸기 도구를 사용하여 할 수 있다고 생각합니다.

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

-vn변경 사항을 적용하려면 테스트 후 (verbose-no action) 스위치를 제거해야합니다 .


우분투 에서이 도구를 어떻게 설치할 수 있습니까? 기본적으로 패키지는 모든 명령 줄 옵션을 지원하지 않는 패키지 에서 rename연결됩니다 . prename(1)perl
David Foerster

@DavidFoerster 당신이 옳을 수도 있습니다. 현재 설치 링크를 찾을 수 없습니다 (2014 년부터 사용하지 않았습니다). 기본 이름 바꾸기 도구를 사용하면 정규 표현식이 있어야한다고 생각합니다 's/^(\d+)/sprintf("%d",$1+500)/e'. 이에 따라 답변을 업데이트하겠습니다. 감사.
sempaiscuba

1
귀하의 답변은 이제 AFSHIN과 중복 됩니다.
David Foerster

@DavidFoerster 죄송합니다. 어떤 대답이 있습니까? 내가 볼 수있는 유일한 다른 대답은 pomsky & waltinator입니다. 이름 바꾸기 (버전 중 하나)를 사용하지 마십시오.
sempaiscuba

내가 의미하는 답변에 대한 직접 링크는 이전 의견에 포함되어 있습니다.
David Foerster

0

쉘 명령으로 이것을 달성하는 또 다른 방법

카운트 = 1 ls; mv $ i CN $ ((count ++)). $ {i ## *.}; 끝난

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.