簡體   English   中英

如何基於正則表達式遞歸查找當前文件夾和子文件夾中的所有文件

[英]How can I recursively find all files in current and subfolders based on regular expressions

我需要在目錄和子目錄中找到所有名稱與不同正則表達式匹配的文件,並打印有關它們的信息。

例如,我有3個目錄:

/foo1
/foo1/foo2
/foo1/foo2/foo3

該目錄中的文件fgg1_1 fgg2_1 fgg3_1

/foo1/fgg1_1
/foo1/foo2/fgg2_1
/foo1/foo2/foo3/fgg3_1

我需要找到所有與RE'f 'f.+1$'匹配的文件。 有人可能會想用

find /foo -regex 'f.+1$' -printf '%f %A@ %s \n'

但肯定不會匹配任何內容,因為-regex會評估完整文件名,例如/foo1/foo2/fgg2_1

我嘗試對輸出進行grep,但是它並沒有太大幫助,因為我仍然需要獲取有關我找到的文件的信息

find /foo -print '%f\n' | grep 'f.+1$'

重要的是要注意,我正在尋找某種通用的解決方案,因為此命令是通過ssh在遠程主機上執行並使用python腳本編譯的,因此文件名的路徑和RE每次都可能不同

您需要刪除文件名RE開頭的所有^符號

find /foo -regex '.*\/f.+1$' -printf '%p %f %h %Y %G %U %A@ %C@ %T@ %s\n'

有點矯kill過正,但是我最終使用了它,因為stat如何顯示c_time

find /foo | grep -e '.*\/f.+1$' | xargs stat --printf '%n %F %g %u %X %Z %Y %s %A\n'

要匹配以給定正則表達式匹配的文件名結尾的整個路徑,可以在其前面加上.*/ ,例如.*/f.+1$ .*/應該與文件名前面的路徑匹配。

如果您不需要正則表達式,可以嘗試:

查找/ foo -name“ fgg *” | xargs ls -l

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM