Shell
檢查列表中的哪些字元串永遠不會出現在目錄的遞歸搜尋中
我有一個字元串列表
stringList
,我想在其中遞歸搜尋一個目錄並找到所有沒有出現在任何搜尋結果中stringList
的字元串。現在,我有
cat stringList | grep -qrf /dev/stdin .
但後來我不知道該去哪裡。
例如我有字元串
富
酒吧
根據
目錄中的文件中只存在 foo。腳本應該返回
酒吧
根據
嘗試:
string="foo bar baz" echo "$string" | grep -v "$(find . -type f -exec cat {} + | grep -o "$string")"
選擇這種方法是因為它只讀取輸入文件一次。
這個怎麼運作
find . -type f -exec cat {} +
這將對文件進行遞歸搜尋並將其內容列印到標準輸出。
grep -o "$string"
這將選擇任何與 的行匹配的文本
$string
。
echo "$string" | grep -v "$(find . -type f -exec cat {} + | grep -o "$string")"
grep -v
返回在遞歸搜尋的文件之一中找不到的字元串中的任何行。例子
考慮一個目錄,其下包含以下文件:
$ find . -type f -exec cat {} + bar none Here baz scaggs behind bars bazooka
如果我們添加 grep,我們只會得到匹配的單詞:
$ find . -type f -exec cat {} + | grep -o "$string" bar baz bar baz
綜上所述,我們確定這
foo
是文件中唯一沒有的詞:$ echo "$string" | grep -v "$(find . -type f -exec cat {} + | grep -o "$string")" foo