我想會來搜索文件名稱中包含另一個字符串,並在過去7天創建的字符串,如何搜索名稱中包含另一個字符串並且在過去7天內在linux中創建的文件中的字符串?
我想:
find . -type f -name '*name_string*' -mtime -7 | grep -ir '*mytext*'
但它沒有工作,
請幫忙
我想會來搜索文件名稱中包含另一個字符串,並在過去7天創建的字符串,如何搜索名稱中包含另一個字符串並且在過去7天內在linux中創建的文件中的字符串?
我想:
find . -type f -name '*name_string*' -mtime -7 | grep -ir '*mytext*'
但它沒有工作,
請幫忙
你真的很接近但錯過了xargs
,否則find
的輸出只是一堆grep文本。
find . -type f -name '*name_string*' -mtime -7 | xargs grep -i 'mytext'
使用xargs
你傳遞文件的文件集grep
應搜索的字符串mytext
的名單。
順便說一句,你可以只使用mytext
代替*mytext*
如果你要搜索的多模式說,在文件名列表pattern1
和pattern2
含name_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
這應該甚至工作包含空格的文件名。
好的,我如何搜索包含2個字符串以及相同條件的文件?我的意思是:'找到。 -type f -name'* name_string *'-mtime -7 | xargs grep -i'* mytext_1 *'AND'* mytext_2 *'' – alwbtc 2013-03-16 07:22:57
您應該可以使用擴展的正則表達式語法,使用'-E'和'grep'來完成此操作。你想要2個字符串在文件的同一行嗎?或者可以在文件的任何位置? – Tuxdude 2013-03-16 07:26:41
可能在文件中的任何位置。 – alwbtc 2013-03-16 07:36:30
無需xargs的或其他非標準擴展到具有良好的文件名的處理:
find . -type f -name '*name_string*' -mtime -7 -exec grep -i 'mytext' {} \;
形容「它不工作」 – 2013-03-16 07:22:59
它沒有工作=沒有發現任何文件。 – alwbtc 2013-03-16 07:37:19
'-mtime'不給你創建文件的時間。 – 2013-03-16 10:55:38