比如 /home/a/文件1 到 /mnt/a/
/home/a/文件2 到 /mnt/a/
/home/b/文件3 到 /mnt/b/
/home/b/文件4 到 /mnt/b/
类似这个意思:cp /home/*/* /mnt/*/ (当然这句是错误的不能实现上面要求,只是用来表达个意思)
实际句子是:cp -fv /mnt/data/file.bk/*/*/csvZip/* /mnt/www/html/*/*/csvZip/
通配文件夹下面还有特定的csvZip文件夹, 如果直接一个* 会把csvZip之外的文件夹内容也复制过去。
如果后面的两个通配符* 能引用前面的两个*的值就能解决问题了,如何引用
这倒确实能实现,可惜文件太多,1T左右全是小文件,估计得花好几天。。。。。
追答另一种办法是写shell脚本进行操作
cd /mnt/data/file.bk
for dir in `find . -type d -name "csvZip"`
do
cp $dir/* /mnt/www/html/$dir
done
恩我先去测试下脚本
追答以下为测试脚本,为了让你看清每一个命令,把以下写到一个文件,如:test.sh测试了几个案例,应该可以用。 多谢,有问题再请教你
追答不客气
没解决,在线等
追答同时将文件file1、file2、file3与目录dir1复制到dir2
cp -R file1 file2 file3 dir1 dir2
用cp -Rvf
几万个文件,必须用通配。
/mnt/data/file.bk/*/*/csvZip/这里很多文件
去覆盖
/mnt/www/html/*/*/csvZip/这里很多同名文件
/*/*/ 是什么意思?
我只用过 cp -Rfv /mnt/data/file.bk/* /mnt/www/html/*
好像
cp -Rfv /mnt/data/file.bk/ /mnt/www/html/也可以
/*/*/ 这个是匹配 类似 /abc/cba/ 这样的目录的。
追答那你直接进csvZip目录,将其文件复制到目标目录就可。
追问/*/*/ 能匹配到好多目录,这些目录下都有csvZip这样的子目录,没法手动进去cp
实际句子是:cp -fv /mnt/data/file.bk/*/*/csvZip/* /mnt/www/html/*/*/csvZip/
通配文件夹下面还有特定的csvZip文件夹, 如果直接一个* 会把csvZip之外的文件夹内容也复制过去。