我目前有一个包含 4 种类型 100 个文件的目录,总共 400 个文件。我想找出哪些丢失了。我当前的脚本是:
for((i=1; i<=100; i++)); do name="File_Type_1_${i}.RData";
[[ ! -e "$name" ]] && echo "missing $name"; done
for((i=1; i<=100; i++)); do name="File_Type_2_${i}.RData";
[[ ! -e "$name" ]] && echo "missing $name"; done
for((i=1; i<=100; i++)); do name="File_Type_3_${i}.RData";
[[ ! -e "$name" ]] && echo "missing $name"; done
for((i=1; i<=100; i++)); do name="File_Type_4_${i}.RData";
[[ ! -e "$name" ]] && echo "missing $name"; done
必须运行 4 次,这很烦人。有没有办法同时运行所有内容?这
答案1
ls -l File_type_{1..4}_{1..100}.RData > /dev/null
该命令使用大括号扩展生成所有 400 个文件名,然后要求ls
列出它们,只有我们立即将输出重定向到 /dev/null,并将其删除。ls
会向 stderr 抱怨丢失的文件;例如:
ls: cannot access 'File_type_1_99.RData': No such file or directory
ls: cannot access 'File_type_3_42.RData': No such file or directory
丢失的文件就在其中!