새 파일을 생성하되 파일 이름이 이미 존재하는 경우 번호를 추가하세요.

새 파일을 생성하되 파일 이름이 이미 존재하는 경우 번호를 추가하세요.

명령줄을 통해 이를 달성할 수 있습니까?

구문: 다음을 사용하여 이미지를 캡처할 수 있습니다.

raspistill -o image.jpg

하지만 매분마다 cron을 통해 이 명령을 실행하고 다음과 같은 결과를 얻을 수 있기를 원합니다.

image1.jpg, image2.jpg, image3.jpg 등...

답변1

접미사 값이 마음에 들지 않으면 이미지가 오름차순이면 날짜와 시간을 사용할 수 있습니다.

raspistill -o "$(date --utc +'image%Y%m%d%H%M.jpg')"

%S필요한 경우 몇 초 정도 연장할 수 있습니다.

이것을 행으로 추가하려는 경우 %항목에 특수 문자가 있다는 점을 기억하십시오 crontab. 문제를 회피하고 (매우 짧은) 스크립트에 넣고 거기에서 해당 스크립트를 호출 하거나 cron각 스크립트 앞에 %백슬래시를 넣으십시오 \. 자세한 내용은 man 5 crontab(검색 )을 참조하세요 %.

답변2

#!/bin/sh

num=1
outfile="image$num.jpg"

while [ -e "$outfile" ]; do
    num=$(( num + 1 ))
    outfile="image$num.jpg"
done

raspistill -o "$outfile"

위 스크립트의 루프는 num변수를 1씩 증가 시키고 outfile사용되지 않은 파일 이름이 발견될 때까지 해당 숫자를 사용하여 새 출력 파일 이름을 생성합니다.

파일 이름이 있는지 테스트하는 것과 새 파일을 만드는 것 사이의 경쟁 조건으로 인해 스크립트의 여러 복사본이 동시에 실행되는 경우 이 작업이 실패할 수 있습니다. raspistill새 파일을 만드는 데 1분 이상 걸리지 않는 한 1분 간격으로 스크립트를 실행하는 데 문제가 없습니다 . 이 경우 touch "$outname"루프 뒤에 추가하여 가능한 한 빨리 파일 이름을 "청구"하십시오(그러나 그 동안 스크립트를 호출하는 것은 여전히 ​​실패할 수 있습니다).

"실패"란 다음을 사용하여 스크립트를 두 번 이상 호출하는 것을 의미합니다.동일한파일 이름은 raspistill.

관련 정보