我最接近的答案是
# rm /path/to/directory/*.*
但这对于没有扩展名的文件不起作用......
答案1
Linux 不使用扩展名。文件名是否应该有扩展名由文件创建者决定。Linux 通过查看前几个字节来确定正在处理的文件类型。
删除所有非隐藏文件* 在目录中使用:
rm /path/to/directory/*
但是,这会为每个子目录显示一个错误,因为在这种模式下只允许删除文件。
要删除目录中的所有非隐藏文件和子目录(及其所有内容),请使用:
rm -r /path/to/directory/*
* 隐藏文件和目录是名称以.
(点)字符开头的文件和目录,例如:.hidden-file
或.hidden-directory/
。请注意,在 Bash 中,如果dotglob
选项(默认情况下是关闭的)设置后,rm
也会对隐藏文件起作用,因为当*
shell 扩展它以提供文件名参数列表时,它们将被包含在内。
答案2
要删除文件夹及其所有内容(包括所有内部文件夹):
rm -rf /path/to/directory
要删除所有文件夹内容(包括所有内部文件夹)但不包括文件夹本身:
rm -rf /path/to/directory/*
或者,如果您想确保隐藏的文件/目录也被删除:
rm -rf /path/to/directory/{*,.*}
要删除文件夹中的所有“文件”(不是删除内部文件夹):
rm -f /path/to/directory/{*,.*}
警告:如果您的路径中有空格,请确保始终使用引号。
rm -rf /path/to the/directory/*
相当于 2 个单独的rm -rf
调用:
rm -rf /path/to
rm -rf the/directory/*
为了避免此问题,您可以使用'
单引号'
(防止所有扩展,甚至是 shell 变量)或"
双引号"
(允许扩展 shell 变量,但防止其他扩展):
rm -rf "/path/to the/directory/"*
在哪里:
rm
- 代表消除-f
- 代表力量例如,当您不想被询问/提示是否要删除档案时,这很有用。-r
- 代表递归这意味着您要递归地遍历每个文件夹并删除所有内容。
答案3
要删除目录中的所有文件(包括隐藏文件和子目录),请运行:
rm -rf /path/to/directory/{*,.*}
答案4
如果你只想删除 /path/to/directory 中的文件,你可以这样做
find /path/to/directory -type f -print0| xargs -0 rm
或者
find /path/to/directory -type f -exec rm '{}' \;
您可以使用 进行加载find
,优点是您可以列出找到的内容而不用通过管道传输,rm
这样您就可以在开始之前看到将要删除的内容。