2016-03-24 14 views
2

'daki yeni dosyalara gözatnumaralı telefonu kullanarak son değiştirilen dosyayı kullanabilirim ancak ilk bölümü de sürekli olarak çalıştıracak bir şey arıyorum, yani yeni bir dosya oluşturulursa Kuyruk komutu çalışıyor ve yeni dosyaya geçiyor. Ben watch komutunu kullanarak düşündüm ama bu böyle bir şey gerekiyor görünüyor tail -fson değiştirilen dosyayı kuyruğa getirin ve bash

+1

Bkz http://superuser.com/questions/956311/continuously- -insan-dizinleri-algılayan-araçları-çoklu-dizinleri-r – tripleee

cevap

3

ile düzgün çalışmamaktadır görünmüyor:

#!/bin/bash 

TAILPID=0 
WATCHFILE="" 

trap 'kill $(jobs -p)' EXIT  # Makes sure we clean our mess (background processes) on exit 

while true 
do 
    NEWFILE=`ls --sort=time | head -n 1` 
    if [ "$NEWFILE" != "$WATCHFILE" ]; then 

      echo "New file has been modified" 
      echo "Now watching: $NEWFILE"; 
      WATCHFILE=$NEWFILE 
      if [ $TAILPID -ne 0 ]; then 
        # Kill old tail 
        kill $TAILPID 
        wait $! &> /dev/null # supress "Terminated" message 
      fi 
      tail -f $NEWFILE & 
      TAILPID=$!  # Storing tail PID so we could kill it later 
    fi 
    sleep 1 
done 
+0

ile algıla Bu, 'ls 'ayrıştırma ve dosya adlarının hiçbir zaman bir yeni satır içerdiğini varsayarak, açık sorun var. Daha sağlam bir çözüm, 'bul' kullanır ve elbette, [herhangi bir değişkene uygun şekilde alıntı yapabilir] (http://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-variable) dosya adı. Ama bu defalarca defalarca dövüldü; çiftleri aramak için gidin. – tripleee

İlgili konular