问题:尾状连续ls(文件列表)

我正在监视在 linux 的文件夹中创建的新文件。我时不时地在其中发出一个“ls -ltr”。但我希望有一个程序/脚本可以自动打印它,并且只有最新的条目。我做了一个短暂的while循环来列出它,但它会重复那些不是新的条目,并且当没有新文件时它会保持我的屏幕滚动。我已经了解了“watch”,它确实显示了我想要的内容并每 N 秒刷新一次,但我不想要一个 ncurses 界面,我正在寻找类似尾巴的东西:

  • 连续

  • 只显示新的东西

  • 在我的终端打印,所以我可以在后台运行它并做其他事情,并时不时地查看输出,然后与我正在做的任何事情混合:D

总结:获取输入,与之前的输入进行比较,只输出新的。这样做的东西听起来不像是一个奇怪的工具,我可以看到它也被用于其他情况,所以我希望它已经存在,但我找不到任何东西。建议?

解答

如果您可以访问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

这是一个单行程序,不会为您提供与ls相同的信息,但它会打印出文件名:

inotifywait -q -m -e create --format %w%f /some/directory
Logo

更多推荐