2017-07-08 37 views
0

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

ls -l dir*/history/ | tail 

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

我怀疑它与xargs有关,但不能真正弄清楚。

+0

你想打印的每个子目录10个文件,或整体? – randomir

+0

这将有助于了解需要查找的*“特定模式”*的类型,以了解是否需要* globbing *或* regex matching *。 –

+0

我想我最终理解你的需要。试试这个例子。 – hedgar2017

回答

1

直接回答你的问题,使用循环:

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

但是,对于更高级目录“过滤”(加工)比这个find可能会派上用场。

+0

虽然我希望有一个线索,但它可以工作... – Manfredo

+0

将所有内容放在一行上,例如对于dir *而言;做ls -l“$ d”|尾巴;完成' –

1

试一下:

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

不是很简洁,但如果你需要匹配嵌套目录的所有级别,从每个子目录挑N个文件...
另外补充2>的/ dev/null的在每个管道之前禁止'权限被拒绝'的信息。或者使用sudo。
与进程替换等效的,如果你需要在while循环中改变全局变量:

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

添加'-name“模式”'将有助于答案匹配更新的问题好一点。您还需要添加'sort'作为'find'不会保留规范的排序顺序。 –

+0

我编辑帖子,添加我的目录模式是嵌套的。你的例子并没有真正的工作(不知道这是为什么)。 – Manfredo

+0

它会,我怀疑编辑即将到来。 –