Что сделать, если я хочу скопировать два файла во время с помощью команды? скажем, мне назвали одну папку ABC
и файлы
mno.txt
xyz.txt
abcd.txt
qwe.txt and so on (100 no. of files)
Теперь я хочу к CP mno.txt
и xyz.txt
за один раз. Как я могу сделать это?
если Вы хотите скопировать их в том же местоположении (не к новому каталогу) для создания резервных копий, (например), можно использовать очень маленькое for
цикл для копирования их с новыми именами (здесь добавляющий .bak
расширение)
for f in {mno,xyz}.txt; do cp -- "$f" "$f".bak; done
{
, расширение фигурной скобки }
является самым сжатым способом указать конкретные файлы в примере, но можно использовать любую подходящую оболочку wildcards/globbing или перечислить файлы при необходимости: for f in foo bar baz;
Можно сделать как это:
cp {mno,xyz}.txt /path/to/destination
Или если Вам нужны все .txt файлы:
cp {*}.txt /path/to/destination
Принятие Вас хочет 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
соглашения с одним файлом при копировании содержания одного файла другому.
Использовать 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)