连接文件包括标题中的路径-路径包含空格

连接文件包括标题中的路径-路径包含空格

我必须在目录结构中连接多个文件,该目录结构包含文件夹名称中的空格,如下所示:./CH 0000100014/A10/11XT/11xt#001.csv

find . -name "*.csv" -type f -print0 | xargs -0  cat > allmycsv.txt

完成这项工作,但是现在我需要包含路径中包含的信息,即CH 0000100014/A10/11XT作为 cat 的每个输入文件的标题。

find . -name "*.csv" -type f -print0 | xargs -0 -I % sh -c 'echo %; cat %' >allmycsv.txt

如果路径中没有空格,则可以完成这项工作,但就我的情况而言,cat 与路径名中的空格不兼容。有办法吗?

干杯,E

PS 我在 OSX 上使用 bash 工作

答案1

您可以在while循环中读取文件列表(参见Bash常见问题解答 #020):

find . -name "*.csv" -type f -print0 | while IFS= read -d $'\0' -r file ; do
    echo "$file"
    cat "$file"
done >allmycsv.txt

答案2

尝试在 % 字符周围添加双引号字符:

sh -c '回显; 猫

相关内容