我必须在目录结构中连接多个文件,该目录结构包含文件夹名称中的空格,如下所示:./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 '回显“%“; 猫“%“‘