[英]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.