请有人知道这个命令的输出,我已经用谷歌搜索了很多,但我找不到任何有用的东西
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