Як копіювати файл на декілька каталогів з однією командою в Linux
Копіювання файлу з командного рядка Linux просте. Але що, якщо ви хочете скопіювати один і той же файл у кілька різних місць? Це також легко, і ми покажемо вам, як це зробити за допомогою однієї команди.
Як правило, для копіювання одного файлу потрібно використовувати ср
команда, що посилається на вихідний файл і каталог призначення:
cp ~ / Documents / FileToBeCopied.txt ~ / Текстові файли /
Щоб скопіювати його до ще двох каталогів, багато людей просто запустять команду ще два рази, з різними напрямками:
cp ~ / Documents / FileToBeCopied.txt ~ / Dropbox /
cp ~ / Documents / FileToBeCopied.txt / media / lori / MYUSBDRIVE /
Однак, ми можемо виконати те ж саме завдання за допомогою однієї команди:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Ось як працює ця команда. The луна
Команда зазвичай пише на екран. Проте в цьому випадку ми хочемо подати вихідний сигнал луна
команду як вхід до xargs
команду. Для цього використовується символ труби ( |
), який подає вихідні дані з однієї команди як вхід до іншої. The xargs
команда запустить ср
команду тричі, кожен раз при додаванні наступного шляху до каталогу з нього луна
команду до кінця ср
команду. Є три аргументи, які передаються xargs
, але -n 1
опції на xargs
команда повідомляє йому лише додавати один з цих аргументів одночасно до ср
Команда кожного разу, коли вона виконується.
Отже, дотримуватися нашого прикладу з попередніх, три окремих ср
вищезазначені команди можна об'єднати в одну команду:
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt
Зверніть увагу, що якщо файл, що копіюється, існує в будь-якому з вказаних каталогів призначення, файл у цьому пункті призначення буде замінено автоматично. Вас не запитають, чи потрібно замінити файл. (Зазвичай, коли ви використовуєте ср
Команда для копіювання файлу в одному місці можна додати -i
запитаєте, чи потрібно замінити існуючий файл. Проте -i
- це інтерактивна опція (вона викликає ср
команда для запиту вводу від користувача), і ви не можете використовувати інтерактивний варіант з ср
команду при його використанні в поєднанні з xargs
.)
Ще одна річ, яку слід врахувати, це те, що, якщо ви копіюєте дуже великий файл, ви можете додати не-clobber ( -n
) опції до ср
в одній команді вище. Ця опція автоматично запобігає перезапису файлу в місці призначення, якщо воно вже існує. Якщо ви копіюєте дуже великий файл по мережі, він може бути повільним, і ви можете уникнути використання ресурсів, необхідних для копіювання та заміни файлу. Наступна команда додає -n
і не буде копіювати файл до будь-якого пункту призначення, зазначеного в аргументах, для оператора echo, якщо файл вже існує в цьому місці призначення..
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt
Введіть man echo, man xargs або man cp в командному рядку Linux для отримання додаткової інформації про будь-яку з цих команд.