我想编写一个脚本来从一个特定的文件夹递归复制文件除文件A.extn
,B/*.extn
并C/*
在那里B
和C
在目录和extn
仅仅是一些通用的扩展。这就是我所拥有的:
#!/usr/local/bin/zsh
setopt EXTENDED_GLOB
TMPDIR=/tmp/test
cp -pR $(dirname $0)/**~(*.foo/*|*/bar.txt|*.abc|qux.txt) $TMPDIR
Run Code Online (Sandbox Code Playgroud)
然而,这并没有像预期的那样否定模式。我想我知道为什么——尽管模式是正确的(如 所示echo
),但cp -R
不知道该模式,并进入了一个“不应该”的目录,一旦进入,该模式就不再有效。
如何修改上述内容以执行我想要的操作?我想用find
and是可能的xargs
,但我被上面的清晰度所吸引,并且更喜欢类似的东西(但如果这是错误的方法,我会非常满意不同的解决方案)。