Jak cp kopiować i wykluczać wewnętrzne pliki lub katalogi (odpowiednik rsync –exclude)

Gdybym poprosił Cię o wspomnienie polecenia skopiowania folderu do innej lokalizacji, prawie każdy by o tym wspomniał cp.

Teraz, jeśli powiem ci, że dodatkowo musisz skopiować całą zawartość tego folderu z wyjątkiem 1 pliku, wielu by pomyślało, a inni wspominają rsync, a następnie z parametrem -Wykluczać możesz wykluczyć plik lub folder X i nie kopiować go. Ale ... czy wiesz, że cp pozwala ci to zrobić? ... O_O … Tak przyjaciele, cp ma swoje własne „wykluczenie” hehe.

Na przykład mamy folder isos zawierający: ubuntu.iso, debian.iso y archlinux.iso :

A zdarza się, że chcemy skopiować do innego folderu (dystrybucje-deb, który jest pusty) plik debian.iso y ubuntu.isoczyli wszystkie oprócz archlinux.iso

W tym celu moglibyśmy ręcznie skopiować plik, a następnie inny, ale znacznie mądrzej jest skorzystać z opcji, które oferuje nam system, prawda? … 😀… na przykład, aby zrobić to po prostu:

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

I to wystarczy, aby skopiować WSZYSTKO zawarte w katalogu isos do distros-deb, wszystko oprócz archlinux.iso 😉

Ale załóżmy, że mamy nie tylko te 3 pliki, ale także fedora.iso i chakra.iso ... i chcemy zrobić to samo, byłoby to również wykluczone z kopii fedora.iso i chakra.iso, zobaczmy, jak to zrobić:

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

Jak widać, można wykluczyć kilka plików lub folderów, oddzielamy je tylko potokiem (|) i sprawa została rozwiązana 😀

Nie mam przez to na myśli, że cp jest lepsze do wszystkiego niż rsync ... ale oba są doskonałymi narzędziami, na przykład ... czy znasz parametr -u de cp? ... hehe, na pewno nie 😉

Cóż, nic więcej do dodania ... czy to interesująca wskazówka? 😀

pozdrowienia


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Josh powiedział

    Nie znałem tej metody, zawsze uczysz się czegoś nowego.
    Doskonała wskazówka, dziękuję.

    1.    KZKG ^ Gaara powiedział

      Dziękuję

  2.   kroto powiedział

    Wskazówka jest bardzo dobra, nie wiedziałem! Pozostaje tylko wyjaśnić użytkownikom Arch i Fedora, dlaczego wykluczyliście ich iso's hehe

    1.    KZKG ^ Gaara powiedział

      JAJAJAJAJAJA Nie umieściłem plików ISO Arch i Fedory, ponieważ w przykładzie próbowano skopiować tylko dystrybucje Deb ... HAHAHAJAJA.

  3.   Heksborg powiedział

    Tutaj musimy poruszyć kilka kwestii. Po pierwsze, działa to tylko wtedy, gdy włączona jest opcja extglob bash. Jeśli tak nie jest, jest aktywowane tym poleceniem:

    shopt -s extglob

    Można go umieścić w pliku .bashrc, aby zawsze był aktywowany.

    Inną kwestią jest to, że ta sztuczka nie jest opcją polecenia cp, ale działa na poziomie basha. Co oznacza, że ​​można go używać z dowolnym poleceniem. Nie tylko z cp. Możesz zrobić test pisząc:

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

    W przeciwnym razie jest to bardzo przydatna sztuczka. Razem z opcją -u dla cp, która również jest przydatna od czasu do czasu.

    1.    Daniel Rojas powiedział

      Jasne, to wyrażenie regularne

      1.    Heksborg powiedział

        W rzeczywistości jest to rozszerzony wzór. Wyrażenie regularne to coś innego, ale na to wygląda. 🙂

    2.    KZKG ^ Gaara powiedział

      Tak, -u w cp jest naprawdę interesujące. Przyznam, że jestem wielkim fanem rsync ... ale nie wiem, mam przywiązanie do kiepskiego cp hahaha.

      O aktywacji shopt nie wiedziałem, założyłem, że to zadziałało automatycznie, dzięki za cynk.

      I tak, podejrzewałem, że ma to więcej wspólnego z Bashem niż cp, ale nie próbowałem jeszcze robić rm, kota czy czegoś takiego :)

      Dzięki za komentarz, naprawdę 😀

      1.    Heksborg powiedział

        Z przyjemnością wykonuję swoją pracę. 🙂

        1.    KZKG ^ Gaara powiedział

          Właściwie zawsze byłem zainteresowany nauką o wyrażeniach regularnych ... czy ekscytujesz się i piszesz o tym dla początkujących? 😀

          1.    Heksborg powiedział

            LOL!! Ty już mnie masz. 🙂 Jak szczęśliwy byłem bez komentarza… 🙂

            Cóż, prawda jest taka, że ​​dzwoni do mnie. 🙂 Ale muszę się jeszcze trochę nad tym zastanowić. Trudno to wyjaśnić.

            1.    KZKG ^ Gaara powiedział

              hahahahaha nic się nie martw, ciągle komentujesz, że wciąż się uczysz ahahahaha, ważne jest, aby się dzielić 😀


  4.   tufadoryna powiedział

    Bardzo dobra wskazówka Nigdy nie pójdziesz spać bez nauczenia się czegoś nowego.

    1.    KZKG ^ Gaara powiedział

      Dokładnie, a co najważniejsze, wiele się uczę z komentarzy, które zostawiasz pod postami, uwielbiam uczyć się dziwnych rzeczy każdego dnia HAHAHA.

  5.   giskard powiedział

    Dobry trik. Nie znałem go 🙂

    1.    KZKG ^ Gaara powiedział

      Przyjemność 😉

  6.   @JlcMux. powiedział

    Ale kiedy wstawiasz isos, masz na myśli wstawić debian.iso ubuntu.iso /! (Itd.)? Nie

  7.   Heber powiedział

    Rzeczywiście okazało się, że to bardzo ciekawa wskazówka. Nie tylko ze względu na sam artykuł, ale także ze względu na wartość dodaną komentarzy.
    Piękna społeczność <º Linuksa

  8.   MARTA OD STUDNI powiedział

    Twoja pomoc nie była dla mnie przydatna, powinieneś podać przykład, aby uczniowie mogli lepiej zrozumieć twoją wspaniałą technikę.
    Dziękuję za poświęcenie czasu, zawsze będę pamiętać tę stronę w moim sercu

  9.   felipe016 powiedział

    Mówisz, że pomijasz katalogi, ale w przykładach pomijasz tylko pliki, czy wiesz, jak pominąć określony katalog? Pozdrowienia.