скопируйте два файла за один раз

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

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

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

6
задан 17 October 2016 в 23:47

4 ответа

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

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

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

3
ответ дан 23 November 2019 в 07:16

Можно сделать как это:

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

Или если Вам нужны все .txt файлы:

cp {*}.txt /path/to/destination
1
ответ дан 23 November 2019 в 07:16

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

cp mno.txt xyz.txt destination_directory

Или используйте расширение фигурной скобки для краткости:

cp {mno,xyz}.txt destination_directory

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

cp -t destination_directory {mno,xyz}.txt

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

16
ответ дан 23 November 2019 в 07:16

Использовать 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
ответ дан 23 November 2019 в 07:16

Другие вопросы по тегам:

Похожие вопросы: