Bash 想知道“查找”命令什么时候找不到任何内容吗
有没有办法让find命令在找不到匹配项时返回值?基本上,我有一个旧备份,我想在我当前的计算机上搜索其中的每个文件。下面是我打算用的一种俗气的方式: 首先从主目录运行以下命令:Bash 想知道“查找”命令什么时候找不到任何内容吗,bash,Bash,有没有办法让find命令在找不到匹配项时返回值?基本上,我有一个旧备份,我想在我当前的计算机上搜索其中的每个文件。下面是我打算用的一种俗气的方式: 首先从主目录运行以下命令: $ ls -lR * > AllFiles.txt; 这将生成当前计算机上所有文件的列表 接下来,为备份中的每个文件运行以下脚本: #! /bin/bash if ! grep $1 ~/AllFiles.txt; then echo file $1 not found; exit 1; fi 当
$ ls -lR * > AllFiles.txt;
这将生成当前计算机上所有文件的列表
接下来,为备份中的每个文件运行以下脚本:
#! /bin/bash
if ! grep $1 ~/AllFiles.txt; then
echo file $1 not found;
exit 1;
fi
当然,这是笨重的,它不考虑文件名的变化,但它已经足够接近了。或者,我想为每个备份文件执行一个find命令。如果使用标准gnu find,则可以使用标准返回值测试,例如:
find . ! -readable -prune -o -name 'filenameToSearch.ext'
然后使用以下命令检查返回值:
echo $?
如果0以外的任何值表示未找到匹配项。如果使用标准gnu查找,则可以使用标准返回值测试,例如:
find . ! -readable -prune -o -name 'filenameToSearch.ext'
然后使用以下命令检查返回值:
echo $?
如果0以外的任何值表示未找到匹配项。如果我理解正确
grep -r valueORpatternToSearchinTEXT $(find . -type f) |wc -l
这将查找您所在的工作/现有目录中的每个文件及其子目录,搜索您需要的内容,然后计算行数,如果未找到,最后将得到0。如果你想知道发现了什么以及在哪里,请先拆下管道,然后再拆。如果我理解正确的话
grep -r valueORpatternToSearchinTEXT $(find . -type f) |wc -l
这将查找您所在的工作/现有目录中的每个文件及其子目录,搜索您需要的内容,然后计算行数,如果未找到,最后将得到0。如果要查看找到的内容和位置,请先删除管道,然后再删除。
退出状态如果成功处理所有文件,则查找状态为0的退出,如果发生错误,则查找状态大于0的退出。这是一个非常宽泛的描述,但如果返回值非零,则不应依赖于find结果的正确性。
它没有说明find是否真的找到了任何东西…@anishsane,在搜索文件名时不正确。有关详细信息,请参见人工查找。$find-readable-prune-o-name QKJFDQWWQEW;echo$?
给了我0
。。。查找版本:find(GNU findutils)4.4.2
另外,我没有将其别名为任何其他内容。我看不到任何基于是否找到匹配文件的退出状态:。顺便说一句,我的第一条评论是来自manfind
“如果返回值非零,则不应依赖find结果的正确性”
这意味着如果find
输出可靠(即未找到任何匹配文件),则退出状态为零。exit status find在成功处理所有文件后退出,状态为0,如果发生错误,则大于0。这是一个非常宽泛的描述,但如果返回值非零,则不应依赖于find结果的正确性。
它没有说明find是否真的找到了任何东西…@anishsane,在搜索文件名时不正确。有关详细信息,请参见人工查找。$find-readable-prune-o-name QKJFDQWWQEW;echo$?
给了我0
。。。查找版本:find(GNU findutils)4.4.2
另外,我没有将其别名为任何其他内容。我看不到任何基于是否找到匹配文件的退出状态:。顺便说一句,我的第一条评论是来自manfind
“如果返回值非零,则不应依赖find结果的正确性”
这意味着如果find
输出是可靠的(即未找到任何匹配文件),则退出状态为零。通过grep传递输出。
如果有任何输出,grep将产生零退出状态,如果你想让你的成绩慢10倍或更多,那么非零。Grep就行了。好吧,那么这个怎么样perl-e'my$t=1;while(){$t=0;print;}退出$t;'代码>通过grep传递输出。
如果有任何输出,grep将产生零退出状态,否则非零。如果您希望结果慢10倍或更多,grep将工作。好的,那么这个如何perl-e'my$t=1;while(){$t=0;print;}退出$t;'代码>