Files
如何為多個目錄中的每一個查找最後 n 個最新文件
我正在嘗試找到一種方法來查找多個目錄的最後 n 個最新文件。
問題在於目錄是結構化的,但不是真正分層放置的,但它們具有特定的名稱。例子:
./sensor -./motion --./2dMotion ---./saved ----./<name>.csv ---./processed ----./<name>.csv --./3dMotion ---./saved ---./processed -./temp --./saved ---./<name>.csv --./processed
對我來說問題如下:我可以在 find 命令中使用 -regex 選項,但是在搜尋過濾最新文件的進一步命令之後,這只能給我最新文件,但這僅對最新文件有效,而不管感測器用來。
我想要實現的是創建輸出,其中將根據時間戳顯示最新的 n 個文件。
我怎樣才能盡可能簡單地做到這一點?
對於GNU 系統上任何目錄中的 10 個最新的正常
.csv
文件:saved
LC_ALL=C find . -type f -regex '.*/saved/[^/]*\.csv' -printf '%T@:%p\0' | sort -rnz | awk -v RS='\0' -F/ '{sub(/[^:]*:/, ""); file = $0; NF--} ++n[$0] <= 10 {print file}'
(文件將從最新到最舊列出)。
使用
zsh
,您還可以執行以下操作:for dir (**/saved(ND/)) print -rC1 -- $dir/*.csv(ND.om[1,10])
find . -type d -exec bash -c 'echo "next dir: ${1}" ; ls -lt "$1" | grep ^- | head -n 5' bash {} \;
整棵樹中最新的
事實證明這不是答案,因為它提供了整個樹中的最新文件,但無論如何它可能會有所幫助。
find . -type f -printf "%T@ %p\n" | sort -nr | awk 'NR==6 { exit; } {$1=""; print; }'