Answers:
find /tmp/our_cache/ -mindepth 1 -delete
编辑1
删除“ -f
编辑2
添加了非标准选项-mindepth 1
,以防止删除搜索根目录(取消-type f
限制后)。
-type f
由于可能还有临时目录(尽管问题中的示例并未说明它们,所以它们可能不存在,我还是会省略它们)
-type f
只会删除常规文件,因此不会删除符号链接。
/tmp/our_cache
所以您也可以这样做rm -r /tmp/our_cache
。在使用非标准选项时,可以使用-mindepth 1
。请注意,与相反rm /tmp/our_cache/*
,它还会删除子目录及其内容和隐藏文件。
您可以将标准错误重定向到,/dev/null
这样它就不会打印此错误
$ rm /tmp/our_cache/* 2>/dev/null
另一种方式(尽管有点过大...):
[ ! -z "$(ls -A /tmp/our_cache/)" ] && rm -rf /tmp/our_cache/*
这用于test
或[
测试ls
在目录上运行时返回的字符串是否为空。然后,当且仅当该字符串不为空时,它才会删除目录中的所有内容。
注意:将glob排除在外ls
将抑制没有文件的错误。
如果您的脚本是BASH中的us,则可以尝试:
if test "$(ls /tmp/our_cache/)" != ""; then rm /tmp/our_cache/*; fi
如果存在“实际”问题或文件受到保护(这样做将需要使用的-f
修饰符rm
以删除这种类型的文件),这样做仍将产生错误,但是当没有文件存在时将避免该错误。
如果您在脚本编写中使用的不是BASH,而是使用其他Shell,例如zsh,ksh,则可以尝试使用其他语法,该语法可能更便于移植:
if [[ "$(ls /tmp/our_cache/)" != "" ]]; then rm /tmp/our_cache/*; fi