如何复制路径中带有花括号扩展的文件?

如何复制路径中带有花括号扩展的文件?

我有一个同名(不同数据)且位于多个目录中的文件。

一个例子:

/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/{} \;

相关内容