images.txt
예를 들어 다음을 포함하는 파일이 있다고 가정해 보겠습니다 .
image1.jpg
image2.jpg
image3.jpg
그런 다음 에 파이프하고 썸네일 보기 images.txt
에 sxiv
변경 사항이 즉시 반영되기를 원합니다. 나는 이것을 시도했습니다 :
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
.