копировать по два файла одновременно

Что делать, если я хочу скопировать два файла за раз с помощью команды? допустим, у меня есть одна папка с именем ABC и файлы

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

Теперь я хочу cp mno.txt и xyz.txt за раз. Как я могу это сделать ?

Предполагая, что вы хотите cp файлы в каталог, вы можете использовать обычный синтаксис для cp :

 cp mno.txt xyz.txt destination_directory 

Или используйте краткость для краткости:

 cp {mno,xyz}.txt destination_directory 

Для большей ясности лучше использовать --target-directory -t ( --target-directory ) для cp , это GNU-ism:

 cp -t destination_directory {mno,xyz}.txt 

Просто отметим, что если вы хотите cp содержание нескольких файлов одним движением cp , вы не можете. cp имеет дело с одним файлом в момент копирования содержимого одного файла в другой.

Используйте синтаксис 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) 

если вы хотите скопировать их в том же месте (а не в новый каталог) для создания резервных копий (например), вы можете использовать очень маленький цикл для их копирования с новыми именами (здесь добавление расширения .bak )

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

{ brace expansion } – наиболее сжатый способ указать конкретные файлы в вашем примере, но вы можете использовать любые подходящие подстановочные знаки / globbing оболочки или перечислить файлы, если необходимо: for f in foo bar baz;