如何使用终端删除当前目录中的所有文件?

我使用的是Ubuntu 14.04 LTS。我尝试了rm 'ls'rm rf,但它们都没有起作用。

1删除警告仅删除当前目录下的文件:rm ./* 如果要删除文件和文件夹内的所有内容,请使用rm -R ./*。如果您不想收到提示信息,请始终使用-f参数。 - Techjail
2个回答

在特定目录中使用rm *命令。 *是一个通配符,匹配所有文件。

它不会删除子目录或其中的文件。如果你也想删除它们,请使用rm -r *

但要小心!rm是删除操作,而不是移动到回收站!

为确保删除正确的文件,您可以使用交互模式,并且它将在每个文件上询问确认:rm -i *


11不匹配隐藏文件。您需要明确引用“.*”来匹配它们。 - Artem Russakovskii
1如果你想删除所有可见和隐藏的文件和文件夹,你可以执行以下命令:rm -r * .* - Artur Müller Romanov

rm *默认情况下会删除所有文件名不以.开头的文件。要从目录中删除所有文件和子目录,请启用bash dotglob选项,使*匹配以.开头的文件名:

shopt -s dotglob
rm -r *

(需要使用-r标志来删除子目录及其内容。)
或者使用find命令:
find . -mindepth 1 -delete
# or
find . -mindepth 1 -exec rm -r -- {} +

-mindepth 1选项是为了保留目录本身。


假设我正在清空一个垃圾文件夹。使用"find . -mindepth 1 -delete"命令会跟随符号链接,从而删除外部文件夹中的内容吗? - Motsel
3rm -fr * .* 同样可以完成任务。为了安全起见,.* 不匹配 ... - Artem Russakovskii
我从来没有尝试过这个,但是文件名扩展允许使用正则表达式,因此可以排除..的引用:rm -rf * .[^.]*,但是这仍然会忽略以两个或更多点开头的不寻常的文件名,比如..foobar - eel ghEEz
@eelghEEz 文件名扩展绝对不允许使用正则表达式 - 它在语法上有相似之处,但在语义上并不相同。扩展的通配符确实具有正则语义,但不匹配语法。 - muru
@ArtemRussakovskii -- 这取决于你使用的shell。例如,bash会排除...,但sh会包括它们。但是,今天我才知道bash不会排除它们。 - keithpjolley