【问题标题】:How to copy multiple files from a different directory using cp?如何使用cp从不同目录复制多个文件?
【发布时间】:2012-03-28 21:20:03
【问题描述】:

一旦我在另一个目录中,我想从特定目录复制多个文件。为了澄清我想立即执行以下操作(一个命令):

cp ../dir5/dir4/dir3/dir2/file1 .
cp ../dir5/dir4/dir3/dir2/file2 .
cp ../dir5/dir4/dir3/dir2/file3 .
cp ../dir5/dir4/dir3/dir2/file4 .

我不能使用cp ../dir5/dir4/dir3/dir2/* .,因为在dir2 中有n 文件(n>4)

顺便说一句,我用的是bash

谢谢。

【问题讨论】:

  • cp -t 目录源是一个选项 这可用于将所有/选定的文件从一个目录复制到另一个....

标签: linux bash cp


【解决方案1】:
cp ../dir5/dir4/dir3/dir2/file[1234] .

或(在 Bash 中)

cp ../dir5/dir4/dir3/dir2/file{1..4} .

如果文件名不连续,可以使用

cp ../dir5/dir4/dir3/dir2/{march,april,may} .

【讨论】:

  • 感谢实际上在真实情况下文件的名称是完全不同的。 cp ../dir5/dir4/dir3/dir2/[march april may] . 不起作用
  • 那你为什么不告诉我们真实的情况?
  • @ziulfer:好的,大括号语法也可以。
  • 再次感谢您。这个大括号语法对我非常有用。但是,我从默认的逐个文件的 cp 命令中真正错过的一件事是自动完成的可能性。是否有可能使用大括号语法?
  • 如果有人遇到这种情况,{alpha.a,beta.b,gamma.g,delta.d} 类型列表中的逗号和文件名之间不能有空格
【解决方案2】:

如果您要复制的所有文件都采用file{number}{othertext} 的模式,您可以使用类似:

cp ../dir5/dir4/dir3/dir2/file[0-9]* .

请注意,这将复制file5,但它也会复制file0abc

如果您只想复制这四个文件(而不是 {othertext} 文件),您可以使用:

cp ../dir5/dir4/dir3/dir2/file[1-4] .

请注意,虽然这个 看起来 像正则表达式的一部分,但实际上并非如此。

【讨论】:

  • 感谢实际上在真实情况下文件的名称是完全不同的。 cp ../dir5/dir4/dir3/dir2/[march april may] . 不起作用
  • 但这不是你的问题。
  • 还想提一下cp ../dir5/dir4/dir3/dir2/F* . 有效。这是针对只有文件名中的起始字母相同的情况。并且只希望复制那些以F 开头的文件
【解决方案3】:

试试这个:

 cp ../dir5/dir4/dir3/dir2/file{1..4}

【讨论】:

  • 仅适用于 bash。 OP 没有说明他使用的是什么外壳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2015-06-23
  • 2010-10-09
  • 2020-08-30
相关资源
最近更新 更多