使用grep命令,我可以打印与命令匹配的数据,但是当数据不可用时如何打印错误?

时间:2019-02-05 22:59:07

标签: linux unix grep

我在子目录中有device.json文件,并且从该.json文件中获取文件,我正在尝试打印data = xxx值,并且正在使用以下Grep命令,但是当device.json文件为在子目录之一中不可用。

查找。名称“ device.json” | xargs grep -E'数据'

2 个答案:

答案 0 :(得分:0)

如果您想了解不包含“ device.json”条目的目录,那么find . -name device.json不会删减。您必须执行以下操作:

find . -type d -exec sh -c 'for x; do f="$x/device.json"; if test -f "$f"; 
    then grep -H data "$f"; else echo "$f: No such file" >&2; fi; done' _ {} \+ 

答案 1 :(得分:0)

尝试类似的东西:

find . -type d |
while IFS= read -r dir; do
    file="$dir/device.json"
    if [ -f "$file" ]; then
        grep 'data' "$file"
    else
        printf '"%s" does not exist\n' "$file"
    fi
done

仅当您的目录名称可以包含换行符时,它才会失败。显然,grep 'data'不是在json文件中查找所需值的可靠方法,但这是一个单独的问题。