我可以tail -f
最後一個修改後的文件使用ls --sort=time | head -1 | xargs tail -f
但我正在尋找的東西,將不斷運行的第一部分以及,即如果一個新的文件創建tail命令正在運行,它將切換到拖曳新文件。我想過使用watch
命令,但似乎並沒有與tail -f
尾巴最後修改後的文件和顯示器中的新文件
2
A
回答
3
更好地工作,看來你需要的是這樣的:
#!/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
這有一個顯而易見的問題,即解析'ls'並假定文件名不包含換行符。一個更強大的解決方案將使用'find',當然,[適當引用任何變量](http://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-variable),其中包含文件名。但這已被多次毆打致死;去尋找重複。 – tripleee
相關問題
- 1. 顯示最後修改時間文件
- 2. BASH:顯示修改日期的最後修改文件
- 3. 尾巴最近的文件
- 4. 最後修改場和下載文件
- 5. Git在更改文件權限後顯示修改後的所有文件
- 6. 使修改後的文件git狀態顯示文件夾
- 7. 文件最後修改的問題
- 8. 顯示文件最後一次修改日期在Blueimp
- 9. 最後修改頭文件和linux文件系統
- 10. NetBeans 7.0.1的Git插件顯示修改後的未修改文件
- 11. 如何從文件列表中獲取最後一個修改後的文件
- 12. Gettext:修改源文件後如何更新po和pot文件
- 13. 從FTP服務器下載新文件和修改後的文件
- 14. 顯示修改後的文檔
- 15. 批處理文件 - 複製兩個最後修改的文件
- 16. Git Bash顯示修改後的非ASCII字符的文件
- 17. 修改文件後重新啓動AppEngine
- 18. PHP得到最後修改文件,多個文件夾和文件
- 19. git Status在新的和修改部分中顯示文件
- 20. git checkout -t顯示修改後的文件
- 21. 顯示文本文件的第一行和最後一行?
- 22. 比較文件夾和導出修改後的文件
- 23. Git不會顯示有一個文件上修改後的文件
- 24. SVN根據文件名和文件內容顯示最新文件修訂版
- 25. 二進制「尾巴」文件
- 26. C#:從目錄中獲取5個最新(最後修改)的文件
- 27. 要顯示Template :: Toolkit文件中的文件的最近修改日期
- 28. 查找文件夾中的最新修改文件
- 29. 如何更改文件的最後修改日期
- 30. 從目錄中選擇最後修改的文件
見http://superuser.com/questions/956311/continuously- detect-new-files-with-inotify-tools-within-multiple-directories-r – tripleee