我正在撰寫一個腳本來根據關鍵字輸入從目錄/根目錄中搜索所有檔案。
echo "Enter keyword"
read key
grep -r -l . -e "$key"
如果我搜索"hei",我知道它位于一個名為 的檔案中mem.c,它會列印/folder/mem.c,而不僅僅是檔案名。我是否有一些錯誤的論點,或者它應該是那樣的?
附加問題,有沒有辦法存盤這些檔案名,并在關鍵字匹配時將它們復制到另一個目錄中?或者也許可以遍歷找到的檔案grep?
uj5u.com熱心網友回復:
這就是grep -l:列印匹配檔案的路徑。如果您只想列印檔案的基本名稱,您可以將結果通過管道傳遞給執行此操作的某個命令。例子:
grep -rlZ "$key" . | xargs -0 -n1 basename
將檔案名存盤在檔案中只是重定向的問題:
grep -rlZ "$key" . | xargs -0 -n1 basename > mylist.txt
要將匹配的檔案復制到某個地方,您將需要它們的路徑,而不僅僅是它們的基本名稱。假設您想將它們全部復制到同一destdir目錄中并且沒有名稱沖突,您可以使用find:
find . -type f -exec grep -l "$key" {} \; -exec cp -f {} destdir \;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/354838.html
上一篇:啟動用戶空間代理時出錯:listentcp40.0.0.0:80:bind:addressalreadyinuse
下一篇:三子棋(會堵棋)
