2017-07-08 54 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

它會,我懷疑編輯即將到來。 –