新しいファイルを作成し、ファイル名がすでに存在する場合は番号を追加してください。

新しいファイルを作成し、ファイル名がすでに存在する場合は番号を追加してください。

コマンドラインでこれを達成できますか?

構文:以下を使用して画像をキャプチャできます。

raspistill -o image.jpg

しかし、1分ごとに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

関連情報