如何cp複製和排除內部文件或目錄(等同於rsync –exclude)

如果我要你提一個將文件夾複製到另一個位置的命令,幾乎每個人都會提到 cp.

現在,如果我告訴你,此外,您必須複製該文件夾的所有內容(除了1個文件),許多將被遺忘,而其他將提及 rsync的,然後加上參數 -排除 您可以排除X文件或文件夾,而不能複制它。 但是...您知道cp也可以執行此操作嗎? ... O_O …是的朋友, cp 有自己的“排除”呵呵。

例如,我們有一個文件夾 ISO文件 包含: 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之外的所有內容

但是,假設我們不僅具有這三個文件,而且還具有fedora.iso和chakra.iso ...,並且我們想要這樣做,那麼它也將從復制fedora.iso和chakra.iso中排除,讓我們看看如何做:

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

如您所見,可以排除多個文件或文件夾,我們僅通過管道將它們分開(|)和已解決的問題😀

我的意思不是說cp在所有方面都比rsync更好...但是,例如,兩者都是出色的工具...您知道參數嗎 -u de cp? ...呵呵,當然不😉

好吧,僅此而已...這是一個有趣的提示嗎? 😀

問候


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   玩笑 他說:

    我不知道這種方法,您總是會學到一些新東西。
    很棒的提示,謝謝。

    1.    KZKG ^ Gaara 他說:

      謝謝

  2.   克羅托 他說:

    小費很好,我不知道! 它僅向Arch和Fedora用戶解釋為什麼您排除了他們的iso嘿嘿

    1.    KZKG ^ Gaara 他說:

      JAJAJAJAJAJA我沒有放入Arch和Fedora ISO,因為該示例僅嘗試複製Deb發行版……哈哈哈哈。

  3.   赫格堡 他說:

    在這裡,我們必須提出幾點。 一個是只有在啟用了bash的extglob選項的情況下,這才起作用。 如果不是,則使用以下命令激活它:

    shopt -s extglob

    可以將其放在.bashrc中以使其始終處於激活狀態。

    另一點是,該技巧不是cp命令的選項,但它適用於bash級別。 這意味著它可以與任何命令一起使用。 不僅用cp。 您可以通過以下方式進行測試:

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

    否則,這是一個非常有用的技巧。 加上cp的-u選項,我有時也會發現它很有用。

    1.    丹尼爾·羅哈斯(Daniel Rojas) 他說:

      當然,這是一個正則表達式

      1.    赫格堡 他說:

        它實際上是一個擴展模式。 正則表達式是其他東西,但看起來像它。 🙂

    2.    KZKG ^ Gaara 他說:

      是的,cp中的-u真的很有趣。 我承認我是rsync的忠實擁護者...但是我不知道,我對可憐的cp哈哈哈依附。

      關於激活購物籃,我不知道,我以為這是自動工作的,謝謝。

      是的,我懷疑它與Bash的關係比cp多,但我還沒有嘗試製作rm或cat或類似的東西:)

      謝謝你的評論,我真的很😀

      1.    赫格堡 他說:

        盡我所能,這是一種榮幸。 🙂

        1.    KZKG ^ Gaara 他說:

          實際上,我一直對學習正則表達式很感興趣……您是否感到興奮並為此撰寫了新手文章? 😀

          1.    赫格堡 他說:

            大聲笑!! 你已經有了我。 🙂我有多高興沒有評論...🙂

            好吧,事實是他在給我打電話。 🙂但是我仍然需要考慮一下。 似乎很難解釋。

            1.    KZKG ^ Gaara 他說:

              哈哈哈哈哈沒事沒關係,你不斷評論說你還在學習哈哈哈哈哈,重要的是分享share


  4.   妥法多林 他說:

    很好的小貼士如果不學習新知識,您永遠上床睡覺。

    1.    KZKG ^ Gaara 他說:

      確實,最重要的是,我從您在帖子中留下的評論中學到了很多東西,我喜歡每天學習奇怪的東西。

  5.   Giskard 他說:

    好招我不認識他🙂

    1.    KZKG ^ Gaara 他說:

      😉

  6.   @jlcmux 他說:

    但是,當您放置isos時,是要放置debian.iso ubuntu.iso /!(等等)嗎? 沒有

  7.   希伯 他說:

    實際上,事實證明這是一個非常有趣的技巧。 不僅因為文章本身,還因為評論的附加價值。
    <ºLinux的美麗社區

  8.   瑪塔·德爾·波佐(MARTA DEL POZO) 他說:

    您的幫助對我沒有用,您應該舉一個例子,以便學生更好地理解您的宏偉技巧。
    感謝您抽出寶貴的時間,我將永遠記住此頁面

  9.   felipe016 他說:

    您說您跳過目錄,但是在示例中您僅跳過文件,您知道如何跳過特定目錄嗎? 問候。