Bash
如何搜尋以 xy_* 開頭並在今天創建/編輯的文件名?
您好,我目前正在嘗試搜尋以 xy_Number 開頭並且今天創建/編輯的日誌文件(不是最後 24 小時)。
我試過:
find /home/USER/logfilesError/ -maxdepth 1 -type f -daystart -mtime -1 print0 | xargs -0 grep - l xy_*
輸出:
find: paths must precede expression: print0
我需要結合:
find -maxdepth 1 -type f -daystart -mtime -1
和
ls | grep -E "xy_"
我想要實現的是:
從今天日期的特定位置搜尋日誌文件,然後更進一步,搜尋這些文件並輸出以 ERROR 開頭的行。(其他行 INFO 和 DEBUG)
所以搜尋工作正常,我想進一步檢查搜尋後的文件,用 grep 查找包含 ERROR 的文件
grep -rl "ERROR" /home/USER/logfilesError/
如何將它們組合到腳本中?如果?有人可以幫我弄這個嗎?
為什麼使用 grep,find 可以完成這項工作:
find /home/USER/logfilesError/ -maxdepth 1 -type f -name "xy_*" -daystart -mtime -1
通過它的聲音,你正在尋找
-name
:find /path -maxdepth 1 -type f -name 'xy_*' -daystart -mtime -1 -exec grep -H ERROR {} +
來自
man find
:
-name pattern
文件名的基礎(刪除了前導目錄的路徑)與 shell 模式模式匹配。元字元(’*’、’?’ 和 '
$$ $$’) 匹配一個 ‘.’ 在基本名稱的開頭(這是 findutils-4.2.2 中的更改;請參閱下面的標準一致性部分)。要忽略目錄及其下的文件,請使用 -prune;請參閱 -path 描述中的範例。大括號並不被認為是特殊的,儘管包括 Bash 在內的一些外殼在外殼模式中賦予大括號具有特殊含義。使用 fnmatch(3) 庫函式執行文件名匹配。不要忘記將模式用引號括起來,以防止它被 shell 擴展。