一次复制两个文件

一次复制两个文件

如果我想使用命令一次复制两个文件,该怎么办?假​​设我有一个名为的文件夹ABC ,文件是

mno.txt
xyz.txt
abcd.txt
qwe.txt and so on (100 no. of files)

现在我想一次cpmno.txt和。我该怎么做?xyz.txt

答案1

假设您想将cp文件放入目录中,则可以使用通常的语法cp

cp mno.txt xyz.txt destination_directory

或者为了简洁使用括号扩展:

cp {mno,xyz}.txt destination_directory

为了清楚起见,最好使用 的-t( --target-directory) 选项cp,这是 GNU-ism:

cp -t destination_directory {mno,xyz}.txt

需要注意的是,如果您想cp一次性获取多个文件的内容cp,那么您不能。cp在将一个文件的内容复制到另一个文件时,一次处理一个文件。

答案2

使用cp -t destination_dir/ file1 file2语法。

例子:

bash-4.3$ ls dir1
file1  file2  file3
bash-4.3$ ls dir2/
bash-4.3$ cp -t dir2/  dir1/file1 dir1/file2
bash-4.3$ ls dir2
file1  file2

对原答案的补充。

喜欢使用 Python 的用户可能会对以下脚本感兴趣,该脚本允许复制命令行上指定的任意数量的文件,最后一个参数是目标。

演示:

bash-4.3$ ls dir1
file1  file2  file3
bash-4.3$ ls dir2
bash-4.3$ ./copyfiles.py dir1/file1 dir1/file2 dir2
bash-4.3$ ls dir2
file1  file2

脚本本身:

#!/usr/bin/env python3
from shutil import copyfile
from os import path
from sys import argv

new_dir = path.realpath(argv[-1])
for f in argv[1:-1]:
    base = path.basename(f)
    orig_file = path.realpath(f)
    new_file = path.join(new_dir,base)
    copyfile(orig_file,new_file)

答案3

如果您想将它们复制到同一位置(而不是新目录)进行备份(例如),您可以使用一个非常小的for循环以新名称复制它们(此处添加.bak扩展名)

for f in {mno,xyz}.txt; do cp -- "$f" "$f".bak; done

{括号扩展}是指定示例中特定文件的最简洁的方式,但您可以使用任何合适的 shell 通配符/通配符,或者在必要时列出文件:for f in foo bar baz;

答案4

你可以这样做:

cp {mno,xyz}.txt /path/to/destination

或者如果您需要所有 .txt 文件:

cp {*}.txt /path/to/destination

相关内容