将目录中的所有文件放入环境变量的好方法是什么?

时间:2016-04-13 19:01:28

标签: bash

现在,我有一个相当重要的解决方案:

FILES=" "
for f in `find $DIR -type f`; do FILES=$FILES$f" "; done

(请注意,我确实想要在每个之间留一个空格)

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

使用命令替换:

FILES=$(find "$DIR" -type f)

但要小心这一点。使用空格作为文件名之间的分隔符意味着您无法处理包含空格的文件名。因此,这仅适用于您知道文件名格式简单的上下文中。对于更一般的情况,您应该使用数组。

答案 1 :(得分:3)

假设您使用的是bash的最新版本,则可以完全取消find并使用数组。

shopt -s globstar
for f in **/*; do
    [[ -f $f ]] && FILES+=("$f")
done