执行此命令
find . -maxdepth 1 '!' -name .scm -exec rm -rf {} + || true
如果没有可用的文件,非常好。否则会产生类似
的消息rm: cannot remove directory: `.'
但命令按预期工作。我是否必须为此消息烦恼?我该如何克服这个问题?
祝你好运
答案 0 :(得分:1)
在Bash中,您可以使用extended globbing来简化此操作(匹配任何以.scm
结尾的文件,包括.scm
本身):
$ shopt -s extglob
$ cd -- "$(mktemp --directory)"
$ touch .scm bar.txt
$ ls -a !(*.scm) # Change to `rm -rf`
bar.txt
或者您可以关注Jameson's suggestion并使用-mindepth
:
find . -mindepth 1 -maxdepth 1 '!' -name .scm -exec rm -rf {} + || true