我怎样才能用 ls 做相当于 tail -f 的事情?

我怎样才能用 ls 做相当于 tail -f 的事情?

可能的重复:
是否可以遵循命令(重复运行)?就像使用 tail -f 跟踪一个文件一样?

我想在 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

相关内容