多子目录下含空格路径的CSV文件批量复制至指定目录求助
解决含空格的CSV文件批量复制问题
以下几种方法可以处理目录名和文件名含空格的CSV文件批量复制需求:
方法1:直接用find的-exec参数
find . -name '*.csv' -exec cp {} /你的目标目录路径/ \;
-exec会逐个传递找到的文件路径给cp命令,自动处理带空格的路径,不需要额外转义。
方法2:find + xargs(高效批量处理)
如果文件数量很多,用xargs配合null分隔符避免空格分割问题:find . -name '*.csv' -print0 | xargs -0 cp -t /你的目标目录路径/
-print0:让find用null字符分隔每个文件路径,而非空格-0:让xargs识别null分隔符,正确读取带空格的路径-t:让cp先指定目标目录,再接收所有源文件参数,提升效率
方法3:使用rsync命令
rsync对带空格的路径支持友好,还能自动跳过已存在的文件:rsync -avm --include='*.csv' --exclude='*' . /你的目标目录路径/
-a:归档模式,保留文件属性-v:显示复制过程-m:复制完成后排除空目录--include='*.csv':仅匹配CSV文件--exclude='*':排除所有其他文件/目录
注意事项
不要用ls /**/*.csv的输出做批量处理,因为ls的结果会被shell按空格分割,带空格的文件名会被拆成多个错误的路径,导致复制失败。
内容的提问来源于stack exchange,提问作者Jim Macaulay
相关产品推荐
相关产品推荐

