2017-12-29 10 views
2

다음 이미지가 있습니다.리눅스 쉘 스크립트를 사용하여 여러 파일 이름 바꾸기

10.jpg 
11.jpg 
12.jpg 

위의 이미지를 제거하고 싶습니다. 다음 쉘 스크립트 파일을 사용했습니다. 그래서, 어떻게 내 자신을 얻을 수 COUNT 값 10을 설정

Img_10.jpg 
Img_11.jpg 
Img_12.jpg 

:

for file in /home/scrapping/imgs/* 
do 
    COUNT=$(expr $COUNT + 1) 
    STRING="/home/scrapping/imgs/""Img_"$COUNT".jpg" 
    echo $STRING 
    mv "$file" "$STRING" 
done 

그래서, 나는이 같은 파일 이름을 교체하려면, 파일 이름

Img_1.jpg 
Img_2.jpg 
Img_3.jpg 

를 대체하지만, 산출?

+0

개수에 10을 사전 할당 하시겠습니까? –

+0

'for' 앞에'count' 변수를 초기화하십시오. –

+0

@ValdeirPsr 초기화했지만 작동하지 않습니다. – Jayesh

답변

4

expr 구문이 꽤 오래되었으므로 POSIX 셸을 사용하면 $(()) 구문으로 산술 계산할 수 있습니다. 당신은 단지 의견에보고 된 오류에서 또한

#!/usr/bin/env bash 

count=10 
for file in /home/scrapping/imgs/*; do 
    [ -f "$file" ] || continue 
    mv "$file" "/home/scrapping/imgs/Img_$((count++)).jpg" 
done 

을 수행 할 수 있습니다, 당신은 dash 쉘에서 실행 될 것으로 보인다. 표준 POSIX 쉘을 따르는 모든 기능을 가지고 있지는 않습니다. sh 또는 bash 셸로 실행하십시오.

항상 쉘 스크립트에서 사용자 정의 변수에 소문자를 사용하십시오. 대문자는 주로 쉘 자체가 관리하는 환경 변수에 대한 것입니다.

1

이름 바꾸기 명령을 사용하면 Img_로 파일을 접미사 수 있습니다

rename 's/^/Img_/' * 

^ 수단 즉 Img_와 파일 이름의 시작을 대체 : 접미사를 추가합니다.

관련 문제