猛砸
簡單,
$ 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