所以,我正在使用
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找到字符串'dark frame'。
我该如何解决?是否有其他命令我应该与 grep 一起使用。
grep -l
或grep -H
似乎无效
以下是在单个文件上运行的imhead命令的典型输出 Imhead Output
答案 0 :(得分:1)
已编辑使用 imhead
既然我已经理解了你在做什么,那么评论中提到的关于使用find
和简短帮助脚本(比如chkDarkFrame.sh
)的方法应该提供一个解决方案。例如,您可以通过调用*.fit
来将../rawdata/m13/m13_dark/
目录中的每个chkDarkFrame.sh
文件传递给find
,类似于:
find ../rawdata/m13/m13_dark/ -type f -name "*.fit" -exec ./chkDarkFrame.sh '{}' \;
(注意:您可以限制find
是否使用-maxdepth
选项强行检查
您的chkDarkFrame.sh
帮助程序脚本可以在文件名上调用imhead
并将结果传递给grep -q
,如果'Dark Frame'
输出中存在imhead
,则打印文件名,例如
#!/bin/bash
imhead "$1" | grep -q 'Dark Frame' && printf "%s\n" "$1"
尝试一下,让我知道这是否更接近。很抱歉早期的混乱。