如果我想使用命令一次复制两个文件,该怎么办?假设我有一个名为的文件夹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