2012-11-14 3 views
1

나는 많은 사진을 인쇄하고 싶지만, 다른 모든 사진을 올바르게 인쇄하려면 가로로 뒤집을 필요가 있습니다. 이제 사진은 모두 png 파일이며 "Foo 001.png", "Foo 002.png"이라는 레이블이 붙어 있습니다. 나는 숫자가있는 문자열의 부분을보고 정수로 변환하는 것이고, 심지어 짝수인지를 확인하기 위해 n%2==0을 수행하고 그것이 짝수이면 뒤집을 수 밖에 없다고 생각하고 있습니다.디렉토리의 다른 모든 사진을 뒤집기

bash를 사용하여 문자열을 정수로 변환 할 수있는 편리한 방법이 있는지 또는 그림을 뒤집을 때 사용할 수있는 방법이 있는지 모르겠습니다. flip 당신이 사진을 플립하는 데 사용하는 명령을 어떤 곳 bash는 이후

+0

Nah, 파일을 반복하면서 파일 이름 지정 규칙에 의존하지 않고 계속 토글하는 변수가 있습니다. 'X = 0; ...; do X = $ ((1- $ X)); if [$ X -eq 1]; then ... fi; ... done' – vladr

+1

잘 모르겠습니다. 1/2 이미지를 뒤집겠습니까? 플립으로, 당신은 회전을 의미합니까? –

+0

@vladr 아마도 더 쉬울 것입니다. 그러나 파일이 반복되는 순서를 어떻게 알 수 있습니까? 알파벳순일까요? – russjohnson09

답변

2

목록에서 다른 모든 이미지를 전환하려면 토글 변수를 사용하십시오.

X=0 

cat filenames | while read -r filename ; do 
    if [ $X -eq 1 ] ; then 
    # flip $filename 
    fi 
    # print $filename 
    X=$((1-$X)) 
done 

당신은 *.jpg 알파벳 순서로 파일 또는 ls -1v to version-sort them, 제로 패딩으로 파일 이름의 시퀀스 번호를 필요로하지 않는 방식을 인쇄 할 수 ls -1 *.jpg 위에서 cat filenames을 대체 할 수 있습니다.

수천 개의 파일이있는 경우

, ls (와일드 카드)의 조합 grep 또는 find 중 하나 sortARG_MAX 제한을 불어 피하기 위해 대신 위의 사용할 수 있습니다.

1

숫자보다는 문자열 훨씬 더, 내 첫번째 생각은

flip Foo\ *{0,2,4,6,8}.png 

될 것이다.

이 명령은 여러 파일 이름을 사용할 수 있다고 가정합니다. 그렇지 않은 경우 루프를 사용할 수 있습니다.

for f in Foo\ *{0,2,4,6,8}.png; do flip "$f"; done 
1

잘 이해하면 1/2 PNG 이미지를 뒤집을 수 있습니까? 당신은 너무 많은 파일이있는 경우

convert -flip "Foo *{0,2,4,6,8,10}.png" 

나 : 다음, 그렇다면

# making an array of files 
files=(*.png) 

# C style for loop (iterating 2 by 2) 
for ((i=0; i< ${#files[@]}; i+=2)) { 
    # fliping the image 
    convert -flip "${files[i]}" 
} 

변환 명령은 잘 알려진 imagemagick 라이브러리의 일부입니다.

관련 문제