跟踪多个目录

Tail multiple directories

如何只打印匹配特定模式的嵌套目录中的最后 (n) 个文件?

正在做

ls -l dir*/history/ | tail 

只给出最后一个目录的内容。

我怀疑它与 xargs 有关,但无法真正弄清楚如何。

要直接回答您的问题,请使用循环:

for d in dir*/history/; do
    ls -l "$d" | tail
done

但是,对于比这更高级的目录 "filtering"(和处理),find 可能会派上用场。

试试看:

find . -type d -name "dir*" | while read dir; do find "$dir" | tail -n 5; done

不是很简洁,但是如果你需要匹配所有级别的嵌套目录并从每个子目录中挑选N个文件...
在每个管道之前添加 2>/dev/null 以抑制 'permission denied' 消息。或者使用 sudo。
如果您需要在 while 循环中更改全局变量,则等效于进程替换:

while read dir; do find "$dir" | tail -n 5; done < <(find . -type d -name "dir*")