我有一个同名(不同数据)且位于多个目录中的文件。
一个例子:
/path/to/this/dir1/data.csv
/path/to/this/dir2/data.csv
/path/to/this/dir3/data.csv
/path/to/this/dir4/data.csv
我想将这些文件(及其上方的相应文件夹)复制到新位置。
我尝试了类似这样的操作(dir1、dir2、dir3、dir4 已经制作完成):
cp -rf /path/to/this/{dir1,dir2,dir3,di4}/data.csv ./{dir1,dir2,dir3,dir4}/.
这当然是行不通的,但我不确定如何在一行中正确地完成它(这将是首选,但如果需要编写脚本就没什么大不了的)。
答案1
如果您cp
支持该--parents
选项,您可以使用
cd /path/to/this
cp --parents dir{1..4}/data.csv /path/to/target/
循环for
也应该有效:
for data in /path/to/this/dir{1..4}/data.csv ; do
cp $data ${data#path/to/this/}
done
或者,使用find
(不涉及括号扩展):
cd /path/to/this
find -path './dir[1234]' -exec cp {}/data.csv /path/to/target/{} \;