想知道find命令何时找不到任何内容

时间:2015-06-28 05:11:45

标签: bash

有没有办法让find命令在找不到匹配项时返回一个值?基本上,我有一个旧备份,我想在我当前的计算机上搜索其中的每个文件。这是我要做的一种俗气的方式:

首先从主目录运行以下命令:

$ ls -lR * > AllFiles.txt;

这将构建我当前计算机上所有文件的列表。

接下来,为备份中的每个文件运行以下脚本:

#! /bin/bash
if ! grep $1 ~/AllFiles.txt; then
    echo file $1 not found;
    exit 1;
fi

当然这很笨重,并没有考虑到文件名的变化,但它足够接近。或者,我想为每个备份文件执行find命令。

2 个答案:

答案 0 :(得分:0)

如果使用标准gnu查找,您可以使用标准返回值测试,例如:

find . ! -readable -prune -o -name 'filenameToSearch.ext'

然后使用以下方法检查返回值:

echo $?

如果0以外的任何值表示找不到匹配项。

答案 1 :(得分:0)

如果我理解正确的话;

grep -r valueORpatternToSearchinTEXT $(find . -type f) |wc -l

这将找到您正在工作/现有目录中的每个文件及其子目录,搜索您需要的内容,然后计算行数,如果找不到,则最后得到0。如果您想查看找到的内容和位置,请移除管道。