通过通配符输入查找文件目录中丢失的文件

通过通配符输入查找文件目录中丢失的文件

我目前有一个包含 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

丢失的文件就在其中!

相关内容