如果我要你提一个将文件夹复制到另一个位置的命令,几乎每个人都会提到 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? ...呵呵,当然不😉
好吧,仅此而已...这是一个有趣的提示吗? 😀
问候
我不知道这种方法,您总是会学到一些新东西。
很棒的提示,谢谢。
谢谢
小费很好,我不知道! 仅向Arch和Fedora用户说明为什么您排除了他们的iso的嘿嘿
JAJAJAJAJAJA我没有放入Arch和Fedora ISO,因为该示例仅尝试复制Deb发行版……哈哈哈哈。
在这里,我们必须提出几点。 一个是只有在启用了bash的extglob选项的情况下,这才起作用。 如果不是,则使用以下命令激活它:
shopt -s extglob
可以将其放在.bashrc中以使其始终处于激活状态。
另一点是,该技巧不是cp命令的选项,但它适用于bash级别。 这意味着它可以与任何命令一起使用。 不仅用cp。 您可以通过以下方式进行测试:
echo文件:isos /!(archlinux.iso | fedora.iso | chakra.iso)
否则,这是一个非常有用的技巧。 加上cp的-u选项,我有时也会发现它很有用。
当然,这是一个正则表达式
它实际上是一个扩展模式。 正则表达式是其他东西,但是看起来像它。 🙂
是的,cp中的-u真的很有趣。 我承认我是rsync的忠实拥护者...但是我不知道,我对可怜的cp哈哈哈依附。
关于激活购物篮,我不知道,我以为这可以自动进行,谢谢。
是的,我怀疑它与Bash的关系比cp多,但我还没有尝试做过rm或cat或类似的事情:)
谢谢你的评论,我真的很😀
尽我所能,这是一种荣幸。 🙂
实际上,我一直对学习正则表达式很感兴趣……您是否感到兴奋并为此撰写了新手文章? 😀
大声笑!! 你已经有了我。 🙂我有多高兴没有评论...🙂
好吧,事实是他在给我打电话。 🙂但是我仍然需要考虑一下。 似乎很难解释。
哈哈哈哈哈没事没关系,你不断评论说你还在学习哈哈哈哈哈,重要的是分享share
很好的小贴士如果不学习新知识,您永远上床睡觉。
确实,最重要的是,我从您在帖子中留下的评论中学到了很多东西,我喜欢每天学习奇怪的东西。
好招我不认识他🙂
😉
但是,当您放置isos时,是要放置debian.iso ubuntu.iso /!(等等)吗? 没有
实际上,事实证明这是一个非常有趣的技巧。 不仅因为文章本身,还因为评论的附加价值。
<ºLinux的美丽社区
您的帮助对我没有用,您应该举一个例子,以便学生更好地理解您的宏伟技巧。
感谢您抽出宝贵的时间,我将永远记住此页面
您说您跳过目录,但是在示例中您仅跳过文件,您知道如何跳过特定目录吗? 问候。