关于bash:如何获取不存在的文件并将其存储到变量中?

How do I grab files that don't exist and store them into a variable?

本问题已经有最佳答案,请猛点这里访问。

我希望当前目录中有6个文件:

1
2
3
4
5
6
prefix_alpha.txt
prefix_beta.txt
prefix_gamma_.txt
prefix_delta.txt
prefix_epsilon.txt
prefix_feta.txt

如何获取不存在的文件的列表并将其存储到bash中的变量中?如果文件名之间没有超过1个空格,则只需要一个空格。结束操作是在SQL语句中沿着INSERT INTO table (columnname) VALUES ("File(s) '$notexistingfiles' don't exist")行使用文件名。


您可以使用test(7)命令检查文件是否存在,因此您所要做的就是循环预期的文件,如果它们不存在,则将它们添加到数组中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# The target files
FILES=(
   "prefix_alpha.txt"
   "prefix_beta.txt"
   "prefix_gamma_.txt"
   "prefix_delta.txt"
   "prefix_epsilon.txt"
   "prefix_feta.txt"
)

# Create a missing array
declare -a MISSING

for file in"${FILES[@]}"; do
    test -e"$file" || MISSING+=("$file")
done

echo"${MISSING[@]}"