如何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.   吉卡德

    好招我不认识他🙂

    1.    KZKG ^ Gaara

      😉

  6.   @jlcmux

    但是,当您放置isos时,是要放置debian.iso ubuntu.iso /!(等等)吗? 没有

  7.   升降机

    实际上,事实证明这是一个非常有趣的技巧。 不仅因为文章本身,还因为评论的附加价值。
    <ºLinux的美丽社区

  8.   玛塔·德尔·波佐(MARTA DEL POZO)

    您的帮助对我没有用,您应该举一个例子,以便学生更好地理解您的宏伟技巧。
    感谢您抽出宝贵的时间,我将永远记住此页面

  9.   felipe016

    您说您跳过目录,但是在示例中您仅跳过文件,您知道如何跳过特定目录吗? 问候。