画像リストを含むファイルをsxivに転送し、変更内容を即座に反映します。

画像リストを含むファイルをsxivに転送し、変更内容を即座に反映します。

images.txtたとえば、次のファイルがあるとします。

image1.jpg
image2.jpg
image3.jpg

その後、にパイプし、サムネイルビューimages.txtsxiv変更がすぐに反映されます。私はこれを試しました:

watch -n 0.1 'cat images.txt | sxiv -i -t'

ただしimages.txt、これを変更して保存した場合(画像ファイル名を追加または削除するなど)、sxivのサムネイルビューは更新されません。

私の配管構造に問題があると思います。これを行う正しい方法は何ですか?

答え1

cat images.txt | sxiv -i -t既存の構成は、10分の1秒ごとに実行を試みます。sxivこれより長くかかると、状況が本当に汚れてしまうことがあります。すべての画像のチェックサムハッシュをチェックする方が良いです。

$ md5sum *.jpg | md5sum
4a009e73fb133d2d103dd2e65ef8c605  -

.jpgこれはファイルのすべてのハッシュを取得し、次のハッシュを生成します。それ。つまり、イメージが変更され、イメージが追加または削除されると、追加されたチェックサムも変更されます。

だから私たちはこれを行うことができます:

#!/bin/bash
old_checksum="$(md5sum *.jpg | md5sum)"
while /bin/true; do
    new_checksum="$(md5sum *.jpg | md5sum)"
    if [[ "$new_checksum" != "$old_checksum" ]]; then
        old_checksum="$new_checksum"
        find . -maxdepth 1 -name \*.jpg -print0 | xargs -0 sxiv -i -t
    fi
    sleep 1
done

変更があるたびに新しいチェックサムを記録して再実行してくださいsxiv

.jpgそれでもファイルディレクトリを維持するには、ファイルのimages.txt内容を使用してチェックサムを作成し、代わりにxargs引数を提供するように簡単に変更できますfind

関連情報