如何将多个文件从一个目录复制到另一个目录

如何将多个文件从一个目录复制到另一个目录

我想将多个文件从一个目录复制到另一个目录。我有一个包含以下结构的变量(文件):

file1 file2

File1 和 file2 位于 dir1 中,我想使用以下似乎不起作用的代码将它们复制到 dir2 中:

cp ./dir1/$files ./dir2

答案1

有几种方法。最简单的就是切换到第一个目录

cd dir1 ; cp $files ../dir2

一个问题是,名称由空格分隔的字符串并不是操作名称的最佳形式,特别是当名称包含空格时。你拥有的就是你拥有的,但我们希望你有 bash、zsh、ksh 或类似的带有数组的东西。将字符串更改为数组:

names=( $files )

然后,您可以应用转换,例如将“dir1/”添加到名称数组的每个元素上。

cp "${names[@]/#/dir1/}" dir2

这不是最明显的语法,所以让我稍微分解一下。

  1. 第一个/引入了替换操作。
  2. 匹配#元素的开头,类似于^正则表达式。
  3. 第二个/结束替换的“from”部分。
  4. dir1/替换的“to”部分,第三个没有什么特别的,/它只是“to”部分中的一个字符。
  5. [@]使得它适用于数组中的所有元素。使用[@]内部双引号可以阻止分词。
  6. 需要使用{和来将和 替换操作与变量名}组合在一起。[@]
  7. $只是普通的变量引用。

相关内容