![在 1000 个编号文件中查找缺失值](https://linux22.com/image/1491885/%E5%9C%A8%201000%20%E4%B8%AA%E7%BC%96%E5%8F%B7%E6%96%87%E4%BB%B6%E4%B8%AD%E6%9F%A5%E6%89%BE%E7%BC%BA%E5%A4%B1%E5%80%BC.png)
我有一个文件夹,里面应该有 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