Linux:忽略目录结构cp
命令:
find a -print0 | xargs -0 -I{} cp {} dist
首先find a
会列出a文件夹下所有文件到标准输出,
xargs
会把标准输出的内容作为参数传给后面的命令,此处为查找到的所有文件,
-I
参数指定代替标准输出字符串,后面用此字符串确定传过来的参数的位置。
最后执行cp find输出的内容 dist
,将文件拷贝到dist目录
上面命令相当于:
find a -exec cp {} dist \;
以上命令若有重名文件则会覆盖,修改命令为若有重名文件则重命名重名文件:
dist=/root/dist #定义一个变量,为要复制到的目录路径,末尾没有/
find a | ( while read i; do if [ -e $dist/${i##*/} ]; then mv $dist/${i##*/} $dist/${i##*/}_1; cp $i $dist; else cp $i $dist; fi; done )