如何获取不存在的文件并将其存储到变量中?
问题描述:
我期待6个文件存在于当前目录:如何获取不存在的文件并将其存储到变量中?
prefix_alpha.txt
prefix_beta.txt
prefix_gamma_.txt
prefix_delta.txt
prefix_epsilon.txt
prefix_feta.txt
如何获得任何文件的列表中不存在并将它们存储到Bash中的变量?如果多于一个的文件名不存在,只需要一个空格。结束动作是沿INSERT INTO table (columnname) VALUES ("File(s) '$notexistingfiles' don't exist")
答
行一个SQL语句中使用的文件名可以使用test(7)命令来检查文件是否存在,因此,所有你需要做的是循环超预期的文件,并将它们添加到一个数组如果它们不存在。
# 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[@]}"
请参阅[bash手册页]中的-f和'-s'表达式(https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-表达式)。 –