解釋

解釋

我忘記了目錄或其子目錄之一中的檔案名稱。我記得該檔案的副檔名 (.nb) 並大致知道它的建立時間。如何列出目前目錄和子目錄中具有此副檔名的所有檔案及其建立日期?我使用的是 Mac OS X。

答案1

執行此操作的簡單方法是桀騁,預設安裝在 macOS 上。它是全域限定符讓您可以按時間戳記和其他元資料選擇和排序檔案。 zsh不支援創建時間,但支援修改時間和inode更改時間;其中之一可能與創建時間相符。

這列出了當前目錄及其子目錄 ( ) 中具有擴展名的100 ( [1,100]) 個最新 ( om) 常規 ( .) 檔案:.nb**/

zsh -c 'ls -ltr **/*.nb(.om[1,100])'

這列出了 7 到 14 天前修改的文件:

zsh -c 'ls -ltr **/*.nb(.m+6m-14)'

答案2

這應該可以實現你想要的。

find . -type f -name '*.nb'|xargs stat -f '%c %N'|sort

解釋

find . -type f -name '*.nb'尋找所有副檔名為 .nb 的檔案。

xargs stat -f '%c %N'列印出前面有unix時間戳記的檔案。

sort把它分類。

答案3

對於 bash(不是 Mac):

find . -type f -iname '*.nb'| xargs -d '\n' stat -c '%z %N'|sort

尋找目前目錄及以下目錄中所有類型為「檔案」的條目,匹配模式

(-iname 忽略大小寫)

透過管道將其傳輸到 xargs

(-d '\n' 將分隔符號變更為換行符號以允許檔案名稱中存在空格)

然後統計

(-c 表示輸出格式 %z = 最後狀態變更 %N 帶引號的檔案名稱)

並對輸出進行排序

答案4

find -name '*.nb' -exec ls -rtl {} +

將顯示與該模式匹配的所有文件的詳細信息,並從最舊到最新對它們進行排序(您可以通過從r命令中刪除該選項來從最新到最舊ls)。

最後+意味著您在搜尋結束時執行命令,而不是為每個匹配項執行該命令。

筆記:這僅適用於合理數量的匹配,如果命令列太長,ls它將被分成幾個ls,導致幾個排序的子集,而整個列表將無法正確排序(謝謝@Gilles和@rudimeier 指出了這一點) 。

相關內容