
請有人知道這個指令的輸出,我已經用谷歌搜尋了很多,但我找不到任何有用的東西
find . -type f -exec grep -H PATH {} \;
先致謝
答案1
命令
find . -type f -exec grep -H PATH {} \;
尋找-type f
當前目錄 ( .
) 或以下目錄中的所有常規文件 ( ),並且對於每個此類文件,執行grep -H PATH {}
時將 {}
替換為相對於當前目錄的文件的完整路徑名。
選項-H
是非標準的,但經常實現,並確保grep
每個匹配行都以該行所在文件的路徑名作為前綴。至少給出兩個文件時,標準會執行此操作)。grep PATH /dev/null {}
grep
grep
與 一起使用的模式grep
是字串PATH
。
總結一下:該命令查找並輸出當前目錄或以下目錄中所有常規文件中在任何地方提到子字串的所有行PATH
。每行都以包含該行的檔案的路徑名作為前綴。
在我的個人主目錄中執行此命令時得到的輸出片段:
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_NM:FILEPATH=/usr/bin/nm
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_SKIP_RPATH:BOOL=NO
./Documents/Pathfinder/build/CMakeCache.txt:CMAKE_STRIP:FILEPATH=/usr/bin/strip
grep
透過一次批量運行盡可能多的文件,而不是每個文件運行一次,可以提高該命令的效率:
find . -type f -exec grep -F -e PATH /dev/null {} +
我還冒昧地grep
在此處添加了一些命令,-F
以便將字串PATH
視為細繩而不是作為正規表示式。此-e
選項僅用於指示下一個參數是模式(例如,如果稍後將模式變更為可能以破折號開頭的內容,則很有用)。
謂詞參數末尾從\;
到 的變更使其將找到的路徑名稱收集到批次中,而不是為每個路徑名稱執行實用程式。+
-exec