我有一个文件夹,里面应该有 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