2013-03-16 16 views
1

我想會來搜索文件名稱中包含另一個字符串,並在過去7天創建的字符串,如何搜索名稱中包含另一個字符串並且在過去7天內在linux中創建的文件中的字符串?

我想:

find . -type f -name '*name_string*' -mtime -7 | grep -ir '*mytext*' 

但它沒有工作,

請幫忙

+0

形容「它不工作」 – 2013-03-16 07:22:59

+0

它沒有工作=沒有發現任何文件。 – alwbtc 2013-03-16 07:37:19

+0

'-mtime'不給你創建文件的時間。 – 2013-03-16 10:55:38

回答

2

你真的很接近但錯過了xargs,否則find的輸出只是一堆grep文本。

find . -type f -name '*name_string*' -mtime -7 | xargs grep -i 'mytext' 

使用xargs你傳遞文件的文件集grep應搜索的字符串mytext的名單。

順便說一句,你可以只使用mytext代替*mytext*

如果你要搜索的多模式說,在文件名列表pattern1pattern2name_string

find . -type f -name '*name_string*' -mtime -7 -print0 | while read -d $'\0' f; do 
    grep -qi pattern1 "$f" && grep -li pattern2 "$f" 
done 

這應該甚至工作包含空格的文件名。

+0

好的,我如何搜索包含2個字符串以及相同條件的文件?我的意思是:'找到。 -type f -name'* name_string *'-mtime -7 | xargs grep -i'* mytext_1 *'AND'* mytext_2 *'' – alwbtc 2013-03-16 07:22:57

+0

您應該可以使用擴展的正則表達式語法,使用'-E'和'grep'來完成此操作。你想要2個字符串在文件的同一行嗎?或者可以在文件的任何位置? – Tuxdude 2013-03-16 07:26:41

+0

可能在文件中的任何位置。 – alwbtc 2013-03-16 07:36:30

1

無需xargs的或其他非標準擴展到具有良好的文件名的處理:

find . -type f -name '*name_string*' -mtime -7 -exec grep -i 'mytext' {} \; 
相關問題