有没有办法让find命令在找不到匹配项时返回一个值?基本上,我有一个旧备份,我想在我当前的计算机上搜索其中的每个文件。这是我要做的一种俗气的方式:
首先从主目录运行以下命令:
$ ls -lR * > AllFiles.txt;
这将构建我当前计算机上所有文件的列表。
接下来,为备份中的每个文件运行以下脚本:
#! /bin/bash
if ! grep $1 ~/AllFiles.txt; then
echo file $1 not found;
exit 1;
fi
当然这很笨重,并没有考虑到文件名的变化,但它足够接近。或者,我想为每个备份文件执行find命令。
答案 0 :(得分:0)
如果使用标准gnu查找,您可以使用标准返回值测试,例如:
find . ! -readable -prune -o -name 'filenameToSearch.ext'
然后使用以下方法检查返回值:
echo $?
如果0以外的任何值表示找不到匹配项。
答案 1 :(得分:0)
如果我理解正确的话;
grep -r valueORpatternToSearchinTEXT $(find . -type f) |wc -l
这将找到您正在工作/现有目录中的每个文件及其子目录,搜索您需要的内容,然后计算行数,如果找不到,则最后得到0。如果您想查看找到的内容和位置,请移除管道。