Как да cp копирате и изключите вътрешни файлове или директории (еквивалентно на rsync –exclude)

Ако ви помоля да споменете команда за копиране на папка на друго място, почти всеки би споменал cp.

Сега, ако ви кажа, че освен това трябва да копирате цялото съдържание на тази папка с изключение на 1 файл, мнозина ще останат да мислят, а други ще споменат Rsync, след това с параметъра –Изключете Можете да изключите X файл или папка и да не ги копирате. Но ... знаете ли, че cp също ви позволява да направите това? ... O_O ... Да приятели, cp има свой собствен "изключи" хехе.

Например имаме папката независимите оператори Тя е, която съдържа: ubuntu.iso, debian.iso y archlinux.iso :

И се случва да искаме да копираме в другата папка (distros-deb, което е празно) файла 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 Не сложих Arch и Fedora ISO, защото примерът се опита да копира само Deb дистрибуции ... HAHAHAHAHA.

  3.   хексборг каза той

    Тук трябва да отбележим няколко точки. Единият е, че това работи само ако опцията extglob на bash е активирана. Ако не е, тя се активира с тази команда:

    shopt -s extglob

    Може да се постави в .bashrc, за да бъде винаги активиран.

    Другата точка е, че този трик не е опция на командата cp, но работи на ниво bash. Което означава, че може да се използва с всяка команда. Не само с cp. Можете да направите теста, като напишете:

    echo Files: isos /! (archlinux.iso | fedora.iso | chakra.iso)

    В противен случай това е много полезен трик. Заедно с опцията -u за cp, която също намирам за полезна от време на време.

    1.    Даниел Рохас каза той

      Разбира се, това е регулярен израз

      1.    хексборг каза той

        Това всъщност е разширен модел. Регулярният израз е нещо друго, но изглежда така. 🙂

    2.    KZKG ^ Гаара каза той

      Да, -u в cp е наистина интересно. Признавам, че съм голям фен на rsync ... но не знам, имам привързаност към беден cp хахаха.

      За активирането на shopt не знаех, предполагах, че това работи автоматично, благодаря за върха.

      И да, подозирах, че има повече общо с Баш, отколкото с cp, но още не се бях опитвал да правя rm или котка или нещо подобно :)

      Благодаря за коментара, наистина го правя 😀

      1.    хексборг каза той

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

        1.    KZKG ^ Гаара каза той

          Всъщност, винаги ми е било интересно да науча за регулярни изрази ... вълнуваш ли се и правиш ли новачка за това? 😀

          1.    хексборг каза той

            LOL !! Вече ме имаш. 🙂 С колко щастлива бях, без да коментирам ... 🙂

            Е, истината е, че той ми се обажда. 🙂 Но все пак трябва да помисля малко за това. Изглежда трудно да се обясни.

            1.    KZKG ^ Гаара каза той

              хахахахаха нищо, не се притеснявайте, продължавате да коментирате, че все още научавате ахахахаха, важното е да споделите 😀


  4.   туфадорин каза той

    Много добър съвет Никога няма да си легнете, без да научите нещо ново.

    1.    KZKG ^ Гаара каза той

      Точно и най-доброто от всичко е, че научавам много с коментарите, които оставяте на публикациите, обичам да уча странни неща всеки ден HAHAHA.

  5.   Гискард каза той

    Добър трик. Не го познавах 🙂

    1.    KZKG ^ Гаара каза той

      Удоволствие 😉

  6.   @Jlcmux каза той

    Но когато поставите isos, имате предвид да поставите debian.iso ubuntu.iso /! (Etc и т.н.)? не

  7.   Хебър каза той

    Всъщност се оказа много интересен съвет. Не само заради самата статия, но и заради добавената стойност на коментарите.
    Красива общност от <º Linux

  8.   МАРТА ДЕЛ ПОЗО каза той

    Вашата помощ не ми е била от полза, трябва да дадете пример, така че учениците да могат по-добре да разберат вашата великолепна техника.
    Благодаря ви, че отделихте време, винаги ще помня тази страница в сърцето си

  9.   felipe016 каза той

    казвате, че пропускате директории, но в примерите пропускате само файлове, знаете ли как да пропуснете определена директория? За разбирането.