Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在使用grep时列出文件路径?_Linux_Macos_Terminal_Grep - Fatal编程技术网

Linux 如何在使用grep时列出文件路径?

Linux 如何在使用grep时列出文件路径?,linux,macos,terminal,grep,Linux,Macos,Terminal,Grep,所以,我正在使用 imhead ../rawdata/m13/m13_dark/*.fit | grep 'Dark Frame' imhead基本上打印FITS文件的头FITS是天文学中使用的主要图像文件之一。可以将其视为摄影文件的exif。所以,我在目录中的所有.fits文件中运行它,并得到输出 IMAGETYP= 'Dark Frame' / Type of image IMAGETYP= 'Dark Frame' / Type of image IMAGET

所以,我正在使用

imhead ../rawdata/m13/m13_dark/*.fit | grep 'Dark Frame'
imhead基本上打印FITS文件的头FITS是天文学中使用的主要图像文件之一。可以将其视为摄影文件的exif。所以,我在目录中的所有.fits文件中运行它,并得到输出

IMAGETYP= 'Dark Frame' /        Type of image
IMAGETYP= 'Dark Frame' /        Type of image
IMAGETYP= 'Dark Frame' /        Type of image
IMAGETYP= 'Dark Frame' /        Type of image
IMAGETYP= 'Dark Frame' /        Type of image
这是意料之中的,因为我知道这个目录中只有5个文件的标题包含字符串“Dark Frame”

我想打印grep在其中找到字符串“暗框”的这些文件的文件路径

我该怎么做呢?是否有另一个命令,我应该与grep一起使用

grep-l或grep-H似乎不起作用

以下是在单个文件上运行的imhead命令的典型输出

编辑以使用imhead

现在我了解了您正在做的事情,关于使用find和一个简短的助手脚本的评论中提到的方法chkDarkFrame.sh应该提供一个解决方案。例如,您可以通过调用find将在../rawdata/m13/m13_dark/目录中找到的每个*.fit文件传递到chkDarkFrame.sh,类似于:

find ../rawdata/m13/m13_dark/ -type f -name "*.fit" -exec ./chkDarkFrame.sh '{}' \;
注意:您可以使用-maxdepth选项限制是否重新查找检查

您的chkDarkFrame.sh帮助程序脚本可以调用文件名上的imhead,并将结果传输到grep-q,如果imhead输出中存在“暗框”,请打印文件名,例如

#!/bin/bash
imhead "$1" | grep -q 'Dark Frame' && printf "%s\n" "$1"

试试看,如果离得更近,请告诉我。很抱歉造成早期的混乱。

您能否添加fit文件的示例标题以及所需的输出?如果您只想将文本输入传递给grep,您希望它如何知道它来自哪个文件?因为您的编辑仍然无法回答我的查询。。也许,您应该一个接一个地循环文件。。。未测试,但类似于../rawdata/m13/m13_dark/*.fit中的文件;dogrep-q‘暗框’这是一个普通的imhead输出文件。不用那么多命令,只需使用grep-l。。。但问题是输入文件不是文本文件而是图像。实际上,如果我不使用imhead命令,这将不起作用。grep可以直接处理fits文件,但文件很大,需要花费大量时间。此外,grep-H返回'Standard input'@Prathamesh您尝试过我建议的for循环了吗?该循环可以工作,但我想知道是否有一种更简单的方法不使用循环。也许用另一个命令。Grep-l或-H仅返回标准输入。我知道您必须使用imhead。然后使用-execdir启动一个调用imhead的助手进行查找,这可能就是问题所在。