Як скопіювати за допомогою cp та виключити внутрішні файли або каталоги (еквівалентно rsync –exclude)

Якби я попросив вас згадати команду для копіювання папки в інше місце, майже всі б згадали cp.

Тепер, якщо я скажу вам, що, крім того, ви повинні скопіювати весь вміст цієї папки, крім 1 файлу, багато хто залишиться замислюватися, а інші згадають rsync, то з параметром –Виключити Ви можете виключити файл або папку X і не копіювати їх. Але ... ви знали, що cp також дозволяє вам це робити? ... O_O ... Так, друзі, cp має своє "виключити" хе-хе.

Наприклад, у нас є папка isos що містить: ubuntu.iso, debian.iso y archlinux.iso :

І трапляється, що ми хочемо скопіювати в іншу папку (дистрос-деб, який порожній) файл debian.iso y ubuntu.iso, тобто всі, крім archlinux.iso

Для цього ми могли б скопіювати файл, а потім ще один, вручну, але набагато розумніше використовувати варіанти, які нам пропонує система, так? … 😀… наприклад, зробити це просто:

cp isos/!(archlinux.iso) distros-deb/

І цього достатньо, щоб ВСЕ, що міститься в каталозі isos, скопіювати в distros-deb, все, крім archlinux.iso 😉

Але припустимо, у нас є не тільки ці 3 файли, але у нас також є fedora.iso та chakra.iso ... і ми хочемо зробити те саме, це також буде виключено з копії fedora.iso та chakra.iso, давайте подивимось, як це зробити:

cp isos/!(archlinux.iso|fedora.iso|chakra.iso) distros-deb/

Як бачите, кілька файлів або папок можна виключити, ми розділяємо їх лише конвеєром (|) і справа вирішена 😀

Під цим я не маю на увазі, що cp краще для всього, ніж rsync ... але, обидва - це чудові інструменти, наприклад ... чи знали ви параметр -u de cp? ... хе-хе, точно ні 😉

Ну, нічого більше додати ... це цікава порада? 😀

привіт


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Добродушна жарт - сказав він

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

    1.    KZKG ^ Гаара - сказав він

      Дякую

  2.   крото - сказав він

    Порада дуже хороша, я її не знав! Залишається лише пояснити користувачам Arch та Fedora, чому ви виключили їхні iso hehe

    1.    KZKG ^ Гаара - сказав він

      JAJAJAJAJAJAJA Я не ставив ISO Arch та Fedora, оскільки приклад намагався скопіювати лише дистрибутиви Deb ... HAHAHAHAHA.

  3.   гексборг - сказав він

    Тут ми повинні сказати пару пунктів. Одне з них полягає в тому, що це працює лише в тому випадку, якщо увімкнено опцію extglob башу. Якщо це не так, це активується за допомогою цієї команди:

    shopt -s extglob

    Його можна помістити в .bashrc, щоб завжди активувати.

    Інший момент полягає в тому, що цей трюк не є можливістю команди cp, але він працює на рівні bash. Що означає, що його можна використовувати з будь-якою командою. Не тільки з cp. Ви можете зробити тест, написавши:

    echo Файли: isos /! (archlinux.iso | fedora.iso | chakra.iso)

    В іншому випадку це дуже корисний фокус. Поряд з опцією -u для cp, що я також час від часу вважаю корисною.

    1.    Даніель Рохас - сказав він

      Звичайно, це регулярний вираз

      1.    гексборг - сказав він

        Це насправді розширений шаблон. Регулярний вираз - це щось інше, але схоже на це. 🙂

    2.    KZKG ^ Гаара - сказав він

      Так, -u в cp справді цікавий. Я визнаю, що я великий шанувальник rsync ... але я не знаю, у мене є прихильність до бідного cp ха-ха-ха.

      Про активацію shopt я не знав, я припускав, що це спрацювало автоматично, дякую за підказку.

      І так, я підозрював, що це більше пов’язано з Башем, ніж cp, але я ще не пробував зробити rm, кота чи щось подібне :)

      Дякую за коментар, я справді 😀

      1.    гексборг - сказав він

        З задоволенням зробити свою справу. 🙂

        1.    KZKG ^ Гаара - сказав він

          Насправді, мені завжди було цікаво дізнатись про регулярні вислови ... ти захоплюєшся та робиш про це новинку? 😀

          1.    гексборг - сказав він

            ЛОЛ!! Ви мене вже маєте. 🙂 З тим, як я був щасливим без коментарів ... 🙂

            Ну, правда в тому, що він телефонує мені. 🙂 Але мені все-таки доведеться трохи подумати над цим. Здається, це важко пояснити.

            1.    KZKG ^ Гаара - сказав він

              ха-ха-ха-ха, нічого не хвилюйся, ти продовжуєш коментувати, що все одно вчишся аха-ха-ха, головне поділитися


  4.   туфадорин - сказав він

    Дуже хороша порада Ви ніколи не ляжете спати, не дізнавшись чогось нового.

    1.    KZKG ^ Гаара - сказав він

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

  5.   Гіскард - сказав він

    Хороший фокус. Я його не знав 🙂

    1.    KZKG ^ Гаара - сказав він

      Задоволення 😉

  6.   @Jlcmux - сказав він

    Але коли ви ставите isos, ви маєте на увазі поставити debian.iso ubuntu.iso /! (Etc тощо)? ні

  7.   Хебер - сказав він

    Справді, це виявилося дуже цікавою підказкою. Не лише для самої статті, але й для доданої вартості коментарів.
    Прекрасна спільнота <º Linux

  8.   МАРТА ДЕЛЬ ПОЗО - сказав він

    Ваша допомога мені не принесла користі, ви повинні навести приклад, щоб студенти могли краще зрозуміти вашу чудову техніку.
    Дякую, що знайшли час, я завжди пам’ятатиму цю сторінку своїм серцем

  9.   felipe016 - сказав він

    ви говорите, що пропускаєте каталоги, однак у прикладах ви пропускаєте лише файли, чи знаєте ви, як пропустити певний каталог? З повагою.