在 1000 个编号文件中查找缺失值

在 1000 个编号文件中查找缺失值

我有一个文件夹,里面应该有 1000 个文件,名为out_x.dat,其中x是从 1 到 1000 的数字。当我执行 时ls out_* | wc -l,我看到有 996 个文件。我想知道哪四个文件丢失了。我该怎么做?我可以用这个列出现有文件:

ls out* | awk -F '_' '{ print $2}' 

有什么可以让我列出 1000 个文件中不存在的那些吗?

答案1

您可以使用一个简单的脚本依次检查每个文件是否存在,例如:

for (( i=1; i<=1000; ++i )); do [ -e out_$i.dat ] || echo out_$i.dat missing; done

如果数字被格式化,比如说 4 位数字,则命令行可以详细说明为:

for (( i=1; i<=1000; ++i )); do printf -v n out_%04d.dat $i; [ -e $n ] || echo $n missing; done

或者(感谢@dave_thompson_085 的评论):

for i in {0001..1000}; do [ -e out_$i.dat ]  || echo out_$i.dat missing; done

相关内容