我正在监视在linux中的文件夹中创建的新文件.我时不时地发出一个"ls -ltr".但我希望有一个程序/脚本可以自动打印它,只有最新的条目.我做了一个短暂的循环来列出它,但它会重复那些不是新的条目,并且当没有新文件时它会让我的屏幕滚动.我已经了解了"watch",它确实展示了我想要的东西并且每隔N秒刷新一次,但是我不想要一个ncurses接口,我正在寻找像tail这样的东西:
总结:获取输入,与之前的输入进行比较,仅输出新的输入.这样做的东西听起来不像是一个奇怪的工具,我可以看到它也用于其他情况,所以我希望它已经存在,但我找不到任何东西.建议?
ope*_*kix 40
您可以使用非常方便的命令 watch
watch -n 10 "ls -ltr"
Run Code Online (Sandbox Code Playgroud)
你会得到一个ls
每10秒钟.
如果你添加一个,tail -10
你将只获得10个最新的.
watch -n 10 "ls -ltr|tail -10"
Run Code Online (Sandbox Code Playgroud)
Sea*_*ght 12
如果您有权访问inotifywait
(如果您使用的是Debian/Ubuntu,则可以从inotify-tools包获得),您可以编写如下脚本:
#!/bin/bash
WATCH=/tmp
inotifywait -q -m -e create --format %f $WATCH | while read event
do
ls -ltr $WATCH/$event
done
Run Code Online (Sandbox Code Playgroud)
这是一个单行,不会给你相同的信息ls
,但它会打印出文件名:
inotifywait -q -m -e create --format %w%f /some/directory
Run Code Online (Sandbox Code Playgroud)