我想在 bash 屏幕上实时监控正在下载到目录的文件。
Linux 中是否有一种简单的方法可以tail -f
在目录上执行与 but 相同的操作(也许使用 ls)?
答案1
使用“观看”命令:
watch ls
这将每 2 秒运行一次“ls”命令。
答案2
watch
如果你得到了的话,这绝对是最好的答案。但为了完整起见,您可以使用一些简单的 shell 脚本来模拟一些粗略类似的东西:
while (true)
do
date
ls -lrt | tail -n 10
sleep 2
clear
done
另一种方法可能是使用diff
.这也会指出是否删除了曾经存在的文件。一个优点是它不会清除终端,因此您可以通过向上滚动来查看所有更改的完整记录。缺点是它会创建两个临时文件来管理状态更改推理。
ls1="/tmp/listing1.dat"
ls2="/tmp/listing2.dat"
ls -lrt > ${ls1}
ls -lrt > ${ls2}
while (true)
do
diff ${ls1} ${ls2} | grep '[<>]'
sleep 2
cp ${ls2} ${ls1}
ls -lrt > ${ls2}
done
答案3
查看inotifywait
,
例如要监视文件夹abc
,你可以这样做:
while inotifywait -e close_write abc; do
# do `ls` when abc changed
ls abc
done