Cách sao chép cp và loại trừ các tệp hoặc thư mục nội bộ (tương đương với rsync –exclude)

Nếu tôi yêu cầu bạn đề cập đến lệnh sao chép một thư mục sang một vị trí khác, hầu như mọi người sẽ đề cập đến cp.

Bây giờ, nếu tôi nói với bạn rằng ngoài ra, bạn phải sao chép tất cả nội dung của thư mục đó ngoại trừ 1 tệp, nhiều người sẽ bị suy nghĩ và những người khác sẽ đề cập rsync, sau đó với tham số -Loại trừ bạn có thể loại trừ tệp hoặc thư mục X và không sao chép nó. Nhưng ... bạn có biết rằng cp cũng cho phép bạn làm điều này? ... O_O … Vâng, thưa các bạn, cp có "loại trừ" riêng của nó hehe.

Ví dụ, chúng tôi có thư mục iso chứa: Ubuntu.iso, debian.iso y Archlinux.iso :

Và nó xảy ra rằng chúng tôi muốn sao chép vào thư mục khác (bản phân phối-deb, đang trống) tệp debian.iso y Ubuntu.iso, nghĩa là, tất cả ngoại trừ Archlinux.iso

Đối với điều này, chúng ta có thể sao chép một tệp và sau đó một tệp khác, theo cách thủ công, nhưng sẽ thông minh hơn nhiều nếu sử dụng các tùy chọn mà hệ thống cung cấp cho chúng ta, phải không? … 😀… ví dụ, để làm điều này chỉ cần:

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

Và điều này là đủ để sao chép MỌI THỨ có trong thư mục isos sang distros-deb, mọi thứ ngoại trừ Archlinux.iso 😉

Nhưng giả sử chúng ta không chỉ có 3 tệp đó, mà chúng ta còn có fedora.iso và chakra.iso ... và chúng tôi muốn làm như vậy, nó cũng sẽ bị loại trừ khỏi bản sao fedora.iso và chakra.iso, hãy xem cách thực hiện:

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

Như bạn có thể thấy, một số tệp hoặc thư mục có thể bị loại trừ, chúng tôi chỉ tách chúng bằng một đường ống (|) và vấn đề đã được giải quyết 😀

Bởi điều này, tôi không có nghĩa là cp tốt hơn cho mọi thứ so với rsync ... nhưng, cả hai đều là những công cụ tuyệt vời, chẳng hạn ... bạn có biết tham số -u de cp? ... hehe, chắc chắn là không 😉

Chà, không cần thêm gì nữa ... đây có phải là một mẹo thú vị không? 😀

Liên quan


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Josh dijo

    Tôi không biết phương pháp này, bạn luôn học được điều gì đó mới.
    Mẹo tuyệt vời, cảm ơn.

    1.    KZKG ^ Gaara dijo

      thanks

  2.   thóp dijo

    Mẹo là rất tốt, tôi đã không biết nó! Nó chỉ còn lại để giải thích cho người dùng Arch và Fedora tại sao bạn loại trừ iso của họ hehe

    1.    KZKG ^ Gaara dijo

      JAJAJAJAJAJA Tôi không đặt các ISO của Arch và Fedora vì ví dụ đã cố gắng sao chép chỉ các bản phân phối Deb ... HAHAHAHAHA.

  3.   lục giác dijo

    Ở đây chúng ta phải làm cho một vài điểm. Một là điều này chỉ hoạt động nếu tùy chọn extglob của bash được bật. Nếu không, nó được kích hoạt bằng lệnh này:

    shopt -s extglob

    Nó có thể được đặt trong .bashrc để luôn kích hoạt nó.

    Điểm khác là thủ thuật này không phải là một tùy chọn của lệnh cp, nhưng nó hoạt động ở mức bash. Có nghĩa là nó có thể được sử dụng với bất kỳ lệnh nào. Không chỉ với cp. Bạn có thể làm bài kiểm tra bằng cách viết:

    echo Các tập tin: isos /! (Archlinux.iso | fedora.iso | chakra.iso)

    Nếu không thì đó là một thủ thuật rất hữu ích. Cùng với tùy chọn -u cho cp, tôi cũng thấy hữu ích theo thời gian.

    1.    Daniel Rojas dijo

      Chắc chắn, đó là một biểu thức chính quy

      1.    lục giác dijo

        Nó thực sự là một mô hình mở rộng. Biểu thức chính quy là một cái gì đó khác, nhưng nó trông giống như vậy. 🙂

    2.    KZKG ^ Gaara dijo

      Vâng, -u trong cp thực sự rất thú vị. Tôi thừa nhận rằng tôi là một fan hâm mộ lớn của rsync ... nhưng tôi không biết, tôi có chấp trước cp kém hahaha.

      Về việc kích hoạt shopt, tôi không biết, tôi cho rằng điều này hoạt động tự động, cảm ơn mẹo.

      Và vâng, tôi đã nghi ngờ nó liên quan nhiều đến Bash hơn là cp, nhưng tôi chưa thử làm một con mèo hoặc một con mèo hoặc một cái gì đó tương tự :)

      Cảm ơn vì đã nhận xét, tôi thực sự làm được 😀

      1.    lục giác dijo

        Đó là một niềm vui để làm bit của tôi. 🙂

        1.    KZKG ^ Gaara dijo

          Trên thực tế, tôi luôn quan tâm đến việc tìm hiểu về biểu thức chính quy ... bạn có hào hứng và đăng một bài mới về nó không? 😀

          1.    lục giác dijo

            CƯỜI LỚN!! Bạn đã có tôi. 🙂 Thật hạnh phúc khi không có bình luận……

            Sự thật là anh ấy đang gọi cho tôi. 🙂 Nhưng tôi vẫn phải suy nghĩ về nó một chút. Nó có vẻ khó giải thích.

            1.    KZKG ^ Gaara dijo

              hahahahaha không có gì đừng lo, bạn cứ comment là mình còn học được ahahahaha, quan trọng là chia sẻ thôi 😀


  4.   tufadorin dijo

    Mẹo rất hay Bạn sẽ không bao giờ đi ngủ mà không học một điều gì đó mới.

    1.    KZKG ^ Gaara dijo

      Chính xác, và tuyệt vời nhất là tôi học được rất nhiều điều với những nhận xét của các bạn trên các bài viết, tôi thích học những điều lạ mỗi ngày HAHAHA.

  5.   giskard dijo

    Mẹo hay. Tôi không biết anh ta 🙂

    1.    KZKG ^ Gaara dijo

      Rất hân hạnh 😉

  6.   @Jlcmux dijo

    Nhưng khi bạn đặt isos, bạn có nghĩa là đặt debian.iso ubuntu.iso /! (V.v.)? Không

  7.   Heber dijo

    Quả thực nó hóa ra là một mẹo rất thú vị. Không chỉ vì bản thân bài báo, mà còn vì giá trị gia tăng của các bình luận.
    Cộng đồng tuyệt đẹp của <º Linux

  8.   MARTHA CỦA WELL dijo

    Sự giúp đỡ của bạn không có ích gì đối với tôi, bạn nên đưa ra một ví dụ để các học viên hiểu rõ hơn về kỹ thuật tuyệt vời của bạn.
    Cảm ơn bạn đã dành thời gian, tôi sẽ luôn ghi nhớ trang này trong trái tim tôi

  9.   felipe016 dijo

    bạn nói rằng bạn bỏ qua các thư mục, tuy nhiên trong các ví dụ bạn chỉ bỏ qua các tệp, bạn có biết cách bỏ qua một thư mục cụ thể không? Trân trọng.