Домашня » як » Як копіювати файл на декілька каталогів з однією командою в Linux

    Як копіювати файл на декілька каталогів з однією командою в 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 для отримання додаткової інформації про будь-яку з цих команд.