Bash:复制root/current文件夹中所有具有相同扩展名的文件,文件名包含特定字符串的文件除外

Bash: Copy all files with same extension in root/current folder, except those whose filename contains certain string

我已经构建了用于在一个 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 语句,而只使用通配符和否定运算符,我该如何做到这一点?

使用扩展 glob:

shopt -s extglob nullglob

cp -r ./{dir1,dir2,dir3,..,fi.le1.ext1,!(*lock).ext2,*.ext3} "../Target_$today/Subdir_$today/"