我怎样才能用 ls 做 tail -f 的等价物?

T. *_*nes 43 ls shell pipe tail

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

我想在 bash 的屏幕上实时监视正在下载到目录的文件。

在 Linux 中是否有一种简单的方法可以在tail -f目录上执行等效的但可能使用 ls 的操作?

小智 67

使用“监视”命令:

watch ls
Run Code Online (Sandbox Code Playgroud)

这将每 2 秒运行一次“ls”命令。

  • 这是最简单的有效答案。我想补充一点 -n# 规定刷新的频率。例如。watch -n1 ls - 每秒运行一次 ls 并刷新屏幕上的数据。 (4认同)

ire*_*ses 9

watch如果你有的话,绝对是最好的答案。但为了完整起见,您可以使用一些简单的 shell 脚本来模拟粗略相似的内容:

while (true)
do
     date
     ls -lrt | tail -n 10
     sleep 2
     clear
done
Run Code Online (Sandbox Code Playgroud)

另一种方法可能是使用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
Run Code Online (Sandbox Code Playgroud)


dai*_*isy 5

退房inotifywait

例如监视文件夹abc,你可以这样做:

while inotifywait -e close_write abc; do
   # do `ls` when abc changed
   ls abc
done
Run Code Online (Sandbox Code Playgroud)