猛砸
简单,
$ rm -rf dir/*
(默认情况下,我相信)猛砸不抱怨没有找到任何与glob相关的东西。
$ echo dir/*
dir/*
当rm
没有找到有文字的glob字符的文件名,它抱怨找不到它被要求删除的文件:
$ rm "dir/*"
rm: cannot remove ‘dir/*’: No such file or directory
$ echo $?
1
它只是通过给你的命令传递你的文字水珠
但是,如果你强迫它,它不会抱怨:
$ rm -f "dir/*"
$ echo $?
0
我不知道这是否副歌 - 从 - 抱怨是POSIX。
但是,请注意,如果您没有设置shell选项“dotglob”,则会漏掉以点开头的文件,也就是“hidden”文件。
一般
岩组不通过默认传递文字水珠。你必须要求“set -o nonomatch
”。
$ echo dir/*
zsh: no matches found: dir/*
$ echo $?
1
$ set -o nonomatch
$ echo dir/*
dir/*
出于兼容性考虑,我不会用上面的现代猛砸专用“rm -rf dir/*
”,但将使用更普遍的,广泛兼容的解决方案:
$ find dir -mindepth 1 -delete
查找所有文件“目录“的最小深度为1(”目录“本身在深度为0),并删除它们。
来源
2014-10-20 18:56:10
Ray
...我提出的问题太快了。明显的解决方案。谢谢。 – 2014-10-20 17:50:14