使用转义空格将文件压缩到数组中

时间:2016-09-02 22:07:45

标签: bash

我使用以下代码片段将文件路径读入数组;

files=()
while IFS= read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find $dir -type f -print0)

但是,当我使用print或echo输出循环遍历数组的每个存储文件路径时,空格将正常输出。我想逃避它们。

some/path/to file -> some/path/to\ file

1 个答案:

答案 0 :(得分:3)

为简单起见,我们假设我们有这个文件名数组:

files=("some/path/to file")

显示文件名的引用形式:

$ printf "%q\n" "${files[@]}"
some/path/to\ file

文档

来自man bash

  

%Q

     

导致printf以可以作为shell输入重用的格式输出相应的参数。