如何只打印与特定模式匹配的嵌套目录中的最后(n)个文件?拖尾多个目录
做
ls -l dir*/history/ | tail
仅给出最后一个目录的内容。
我怀疑它与xargs
有关,但不能真正弄清楚。
如何只打印与特定模式匹配的嵌套目录中的最后(n)个文件?拖尾多个目录
做
ls -l dir*/history/ | tail
仅给出最后一个目录的内容。
我怀疑它与xargs
有关,但不能真正弄清楚。
直接回答你的问题,使用循环:
for d in dir*/history/; do
ls -l "$d" | tail
done
但是,对于更高级目录“过滤”(加工)比这个find
可能会派上用场。
虽然我希望有一个线索,但它可以工作... – Manfredo
将所有内容放在一行上,例如对于dir *而言;做ls -l“$ d”|尾巴;完成' –
试一下:
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*")
添加'-name“模式”'将有助于答案匹配更新的问题好一点。您还需要添加'sort'作为'find'不会保留规范的排序顺序。 –
我编辑帖子,添加我的目录模式是嵌套的。你的例子并没有真正的工作(不知道这是为什么)。 – Manfredo
它会,我怀疑编辑即将到来。 –
你想打印的每个子目录10个文件,或整体? – randomir
这将有助于了解需要查找的*“特定模式”*的类型,以了解是否需要* globbing *或* regex matching *。 –
我想我最终理解你的需要。试试这个例子。 – hedgar2017