2017-10-25 7 views
2

私は特定の形式で取るファイルのスクリーンショットを保存するbashスクリプトを作成しようとしています。私はそれが数字(例えば0001.jpeg)として保存され、0001.jpegが既に存在する場合は、0002.jpegなどで保存してください。私はffmpegと知っています。ビデオからフレームを保存しようとすると、このように保存される形式を持つことができます:/path/to/place/%04d.extそしてそれは私が望むだけのことをするでしょう。私も試してみましたファイル名を増分番号として保存する

gnome-screenshot -w -B -f /home/usr/ws/images_to_process/$%04d.jpeg 

gnome-screenshot -w -B -f /home/usr/ws/images_to_process/$(%04d).jpeg 

と:

gnome-screenshot -w -B -f /home/usr/ws/images_to_process/%04d.jpeg 

しかし、それは動作しませんでしたが、私は私のコードで、それはこのように見えるようにすることを試みました。あなたが見ることができるように、私は多くの変動性を考えることができません。誰もそれを行う方法を知っていますか?あなたはOUTFILE名前を生成するために、正しい番号の形式を使用しているが、あなたは、変数や」を「/home/usr/ws/images_to_process/%04d.jpeg」を翻訳するのprintfが必要

おかげ

+0

名前がパターンに一致するファイルを検索し、最高の番号を見つけて追加する小さなプログラムを作成します。だから、そのプログラムを書いて、それを終わらせるための助けが必要な場合は、スタックオーバーフローに戻ってきてください。または私は何かを逃していますか? – Mort

+1

'$(printf"%04d "$((N ++)))のようなものが必要です。 –

答えて

2

/home/usr/ws/images_to_process/0001.jpeg "

私は、既存のファイルを上書きすることなくシリアル番号を使用してファイルを作成する小さなスクリプトを作成しました。

#!/bin/bash 

    FILENAME="file_%04d.txt" 
    COUNTER=0 

    #Change true for your finish condition 
    while true; do 
     target=$(printf $FILENAME $COUNTER) 

     # If not exists file $tarjet 
     # -f check if exist a file 
     # ! not condition 
     if [ ! -f $target ]; then 
       touch $target 
     fi 
     # counter ++ 
     COUNTER=$(($COUNTER + 1)) 
    done 

あなたが変更することができます名前outfileをあなたのために "のgnome-スクリーンショット-w -B -f $ターゲット" 、変数 "ターゲット" を "$ターゲットに触れます"。結果のスクリプトは次のとおりです。

#!/bin/bash 

    FILENAME="/home/usr/ws/images_to_process/%04d.jpeg" 
    COUNTER=0 

    while true; do 
     target=$(printf $FILENAME $COUNTER) 
     if [ ! -f $target ]; then 
       gnome-screenshot -w -B -f $target 
     fi 
     COUNTER=$(($COUNTER + 1)) 
    done 

この情報は役に立ちましたか?

+1

ありがとう!それは働いた:D –

関連する問題