有人可以解释一下用于查找图像的终端命令如何工作吗?

时间:2019-02-09 21:00:34

标签: terminal grep find

我找到了此命令来查找所有图像,即使它们没有文件扩展名。但是,我不知道它是如何工作的,也不喜欢使用我不了解的东西

find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'

1 个答案:

答案 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 findman fileman grep,您可以查看每个组件的完整文档(联机帮助页)。 https://explainshell.com/(在注释中提到了@Cyrus)显示的信息来自手册页-这是查找所需零件的捷径。

您还可以分别运行命令以进行实验:运行find . -name '*'file <file name>find . -name '*' -exec file {} \;都将有助于可视化正在发生的事情。