从文件夹中删除文件,Bash中的文件除外



我需要添加一个脚本,在安装新版本之前从目录中删除文件。我需要从目录一目录保存目录-/logs和里面的所有文件(里面有*.log和*.zg文件(

我创建了这一行:find /directory/path/* ! -name 'logs' -type d,f -exec rm -r -v {} +但在Debian 11中,它还清理了目录日志中我的文件。你知道什么是原因吗?

它在macbook m1上的zsh上工作,并且没有清理我的日志目录。

小心:(

期望bash脚本,它从给定的目录中删除所有目录和文件,除了一个目录/log和里面的所有文件(里面有*.log和*.zg文件(。

考虑:

$ find . ! -name logs
.
./logs/a
./foo
./foo/a

这里的问题是,尽管目录logs与主-name logs匹配,但logs中的名称a不匹配。所以find对该文件进行操作。与其否定-name主目录,不如匹配find:中的logs目录和prune

$ find . -name logs -prune -o -print
.
./foo
./foo/a

还要注意,您几乎肯定想要find /directory/path ...,而不是find /directory/path/* ...。不需要将/directory/path中的所有名称作为参数传递给find,事实上。。。奇怪的只需通过顶级目录,让find处理树的下降。

也许是扩展的globbing。

shopt -s extglob
rm -frv /directory/path/!(logs)

相关内容

  • 没有找到相关文章

最新更新