【发布时间】:2020-09-20 05:53:33
【问题描述】:
我已经构建了用于在一个cp 命令行中复制多个文件夹和文件匹配文件类型的脚本,如下所示:
today=$(date +"%d-%m-%Y");
cp -r ./{dir1,dir2,dir3,..,fi.le1.ext1,*.ext2,*.ext3} "../Target_$today/Subdir_$today/"
现在我想复制“.ext3”的所有文件,但忽略名称中包含“lock”或“-lock”的文件。因为这些文件是自动生成的,所以不需要备份它们(例如 package-lock.json)。
如何在不添加任何 find 语句的情况下做到这一点,而只使用通配符和否定运算符?
【问题讨论】:
-
用
rsync -a --exclude '*lock*' ....代替cp -r不是更方便吗? -
GitBash 中没有
rsync之类的命令,正如我在下面的评论中已经说过的并且也在标签中提到的那样,该解决方案也需要在 GitBash 中以相同的方式工作。 -
老实说,我不知道 GitBash 到底附带了哪些工具,但如果你使用它,就意味着你在 Windows 上运行。您是否考虑过安装 Cygwin,它为您提供了“常用”工具的全部选择?
-
我只需要使用 GitBash,因为它已经安装了,而且我所说的系统是办公系统,我无权删除或安装新应用程序,除了 GitBash 是如今被广泛使用,而 Cygwin 正在慢慢过时..
-
我明白了。但仅供参考(以防有一天您需要它):您也可以在本地安装 Cygwin,而无需管理员权限(设置中有一个选项)。至于 Cygwin 是否过时,我认为这取决于微软如何改进他们的 Ubuntu 子系统——当然,我也无法预测未来。
标签: bash shell wildcard git-bash cp