フルサイズに基づいて画像グループを追加する

フルサイズに基づいて画像グループを追加する

このパターンで名前が付けられた何百もの画像があります。

file-001.gif
file-002.gif
file-003.gif
...

Magickを使用して、合計サイズが950kbを超えない限り、各画像セットを追加したいと思います。

その後、合計サイズが950kb未満の場合は、次のバッチを処理します。

これはシェルスクリプトで達成できますか?

ベストアンサー1

まあ、私はこれが私が見たものの最悪の1行だと確信していますが、それがうまくいくと思います。緩くベースhttps://askubuntu.com/questions/878948/how-do-i-generate-a-running-cumulative-total-of-the-numbers-in-a-text-file

sed $(echo 3+`ls -la | tee out/filesWithSizes.txt | awk '{print $5}' | awk '{total += $0; $0 = total}1' | sed 's/$/ < 950000/' | bc | grep -o '1' | wc -l`|bc )q out/filesWithSizes.txt | tail -n +4

この狂気を説明しましょう。

ls -laすべてのファイルとサイズを取得するために使用されます。

tee後で参照できるように、その情報を保存してパイプラインに保存するために使用されます。

5列印刷用awk(例:サイズ)

moreを使用してawk累積合計を作成し、各デザインが整列することを保証します(後で重要になります)。

sed行末を置き換えるために使用されるので、デフォルトで< 950000文字列を追加します。

bcこれらの式を評価し、ブール値(0または1など)に変換するために使用されます。

grep -o1を含む行のみを印刷するために使用されます。

累積合計は設計によってソートされているため、出力を計算し、一緒に貼り付けることができるファイルの数を順番に知ることができます。

この部分はで終わりましたwc -l。最初はaフラグなしでは動作できなかったので、3 +ファイルリスト出力の停止点を取得するために計算したlsばかりの数値をエコーし​​ました。bc

次に、sedコマンド置換を使用して、以前にechoを使用して計算した行数の後に保存されたファイルのリストの内容とサイズの出力を停止します。

tail最後に、そのファイルのヘッダーではなく、最初の行から出力を開始するために使用されます。

これにより、接続できるすべてのファイルのリストが表示されます。処理されたすべてのファイルを移動し、ディレクトリにファイルがなくなるまで巨大なオネライナを再実行し続けます。

おすすめ記事