我找到了此命令来查找所有图像,即使它们没有文件扩展名。但是,我不知道它是如何工作的,也不喜欢使用我不了解的东西
find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'
答案 0 :(得分:0)
基本上,算法是针对当前目录及其所有子目录中的每个文件,获取文件信息,查找单词“ image”,并打印匹配的行
我将命令分解为各个部分...
find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'
find
-遍历文件层次结构,并列出文件.
-从当前目录开始-name '*'
-考虑所有文件名-exec file {} \;
-对于find
返回的每个文件,执行file
以确定文件类型。 {}
是find
返回的名称的占位符|
-将上一个命令的结果传递给下一个命令grep
-在输入的每行上执行正则表达式模式匹配-o
---only-matching
的缩写;仅打印行中匹配的部分-P '^.+: \w+ image'
-查找指定的模式,该模式实际上表示:包含单词“ image”的行。 Google的“ regex速查表”可以加深了解。通过运行man find
,man file
和man grep
,您可以查看每个组件的完整文档(联机帮助页)。 https://explainshell.com/(在注释中提到了@Cyrus)显示的信息来自手册页-这是查找所需零件的捷径。
您还可以分别运行命令以进行实验:运行find . -name '*'
,file <file name>
和find . -name '*' -exec file {} \;
都将有助于可视化正在发生的事情。