我目前有一个目录/mydir
,里面应该是1000个表格的数据文件File1.exe, File2.exe, ... , File100.exe
。
我目前有一个 for 循环,用于搜索和输出丢失的文件:
for((i=1; i<=1000; i++))
do
name="File.${i}.exe"; [[ ! -e "$name" ]] && echo "$i"
done
我想知道是否有任何方法可以代替回显丢失的索引,而是将其放入逗号分隔的列表中,例如:
1,5,20,40,etc
.
有没有办法做到这一点?
只需使用逗号分隔的字符串,继续将文件索引添加到变量并打印变量
或者您可以将值存储在数组/列表中
使用
/bin/sh
和 位置参数列表来存储丢失文件的名称:或使用
bash
和数组:使用
"$*"
or"${missing[*]}"
时,数组将被转换为字符串。字符串将与$IFS
作为分隔符的第一个字符(默认为空格)连接。子shell 设置IFS
为逗号,然后打印以逗号连接的数组。子shell 停止IFS
在脚本的其余部分设置变量。该代码还能够处理包含空格等的文件名。
使用
paste
工具,只需添加| paste -sd,
到循环中:解释:
-s
:一次粘贴一个文件,而不是并行粘贴-d
: 分隔符(,
在这种情况下)