Оригінальна публікація: The Linux cp Command – How to Copy Files in Linux

Існує декілька різних способів скопіювати та вставити вміст під час роботи за комп’ютером.

Якщо ви проводите більше часу в інтерфейсі користувача свого пристрою, ви, ймовірно, використовуватимете мишу. Ви можете скопіювати файли, натиснувши на файл правою кнопкою миші та обравши «Копіювати», а потім перейти в інший каталог та обрати «Вставити».

Якщо ж ви використовуєте термінал, то ви також можете виконувати операції копіювання-вставлення файлів, не виходячи з термінала. У терміналі на базі Linux для цього використовують команду cp.

У цій статті я поясню, що таке команда cp та покажу, як копіювати та вставляти файли й каталоги в Linux за допомогою терміналу.

Що таке команда cp?

Команду cp використовують, щоб копіювати файли з одного місця в інше. Ця команда також може копіювати каталоги (папки).

Синтаксис цієї команди:

cp [...file/directory-sources] [destination]

[file/directory-sources] позначає джерела файлів або каталогів, які потрібно скопіювати. А аргумент [destination] позначає місце, куди потрібно скопіювати файл.

Щоб зрозуміти решту статті, я використаю цю структуру папки як приклад. Нехай каталог під назвою DirectoryA містить два каталоги: DirectoryA_1 та DirectoryA_2. Ці вкладені каталоги містять багато файлів та інших вкладених каталогів.

Я також припускаю, що зараз ви перебуваєте в терміналі на DirectoryA, а якщо ні, то перейдіть до нього:

cd DirectoryA

Як копіювати файли за допомогою команди cp

Якщо ви хочете скопіювати файл, скажімо, README.txt з DirectoryA_1 до DirectoryA_2, то використайте команду cp ось так:

cp ./DirectoryA_1/README.txt ./DirectoryA_2
# ./DirectoryA_1/README.txt є вихідним файлом
# ./DirectoryA_2 є місцем призначення

Якщо ви хочете скопіювати більше файлів з DirectoryA_1 до DirectoryA_2, то використайте команду cp ось так:

cp ./DirectoryA_1/README.txt ./DirectoryA_1/ANOTHER_FILE.txt ./DirectoryA_2

Як бачите, спочатку ви розміщуєте всі вихідні файли, а останній аргумент є місцем призначення.

Як копіювати каталоги за допомогою команди cp

За замовчуванням команда cp працює з файлами. Отже, якщо ви спробуєте скопіювати каталог ось так:

cp ./DirectoryA_1/Folder/ ./DirectoryA_2

Ви отримаєте помилку:

./DirectoryA_1/Folder/ is a directory

Щоб скопіювати каталоги, потрібно передати прапорець -r. Цей прапорець інформує команду cp рекурсивно копіювати каталог та його вміст (яким можуть бути файли чи інші вкладені каталоги). Тому до попередньої команди ви можете додати прапорець перед джерелами каталогу, ось так:

cp -r ./DirectoryA_1/Folder/ ./DirectoryA_2

Ця команда рекурсивно скопіює каталог Folder до ./DirectoryA_1/, а також усі файли та каталоги в каталозі Folder.

Як копіювати файли, які відповідають шаблону glob

Шаблон glob подібний до регулярного виразу, який дозволяє зіставити декілька файлів з назвами, які відповідають певному шаблону. Дізнайтеся більше про різницю тут: Regex vs шаблони Glob.

Наприклад, якщо ви хочете скопіювати всі файли з DirectoryA_1 з розширенням .txt, то виконайте цю команду:

cp ./DirectoryA_1/*.txt ./DirectoryA_2

./DirectoryA_1/*.txt відповідає файлам з розширенням .txt у їхніх назвах, а команда cp може скопіювати всі ці файли до місця призначення.

Ви можете переглянути документацію glob, щоб дізнатися більше про шаблони glob та символи, які можна використовувати.

Тепер ви знаєте, як копіювати файли (та каталоги) прямо з командного рядка. Дякую, що прочитали!