我最接近的是
# rm /path/to/directory/*.*
但这对于没有扩展名的文件不起作用。..
我最接近的是
# rm /path/to/directory/*.*
但这对于没有扩展名的文件不起作用。..
Linux不使用扩展。 由文件的创建者来决定名称是否应该有扩展名。 Linux查看前几个字节来弄清楚它正在处理什么样的文件。
要删除所有 非隐藏文件*在目录中使用:
rm /path/to/directory/*
但是,这将显示每个子目录的错误,因为在这种模式下只允许删除文件。
要删除目录中的所有非隐藏文件和子目录(以及它们的所有内容),请使用:
rm -r /path/to/directory/*
*隐藏的文件和目录是那些名称以开头的文件和目录 .
(点)字符,例如: .hidden-file
或 .hidden-directory/
. 请注意,在Bash中,如果 dotglob
选项 (默认情况下是关闭的)设置, rm
也会对隐藏文件采取行动,因为它们将在 *
由shell展开以提供文件名参数列表。
删除包含所有内容的文件夹(包括所有内部文件夹):
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/torm -rf the/directory/*
要避免此问题,您可以使用 '
单引号'
(防止所有扩展,即使是shell变量)或 "
双引号"
(允许扩展shell变量,但防止其他扩展):
rm -rf "/path/to the/directory/"*
哪里:
rm
-代表 移走
-f
-代表 警队 例如,当您不想被询问/提示是否要删除存档时,这很有用。-r
-代表 递归 这意味着你想递归地向下每个文件夹并删除所有内容。要删除目录中的所有文件(包括隐藏文件和子目录),请运行:
rm -rf /path/to/directory/{*,.*}
删除所有文件和目录(包括 隐藏的 一)在一个目录中,你可以尝试以下:
删除文件夹,然后重新创建它
rm -rf dir_name && mkdir dir_name
使用方法 find
find dir_name -mindepth 1 -delete
在这里我们指定 -mindepth 1
以排除目录dir_name本身。
看看下面的链接:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
如果你只想删除/path/to/目录中的文件,你可以这样做
find /path/to/directory -type f -print0| xargs -0 rm
或
find /path/to/directory -type f -exec rm '{}' \;
你可以用 find
,好处是你可以列出找到的东西,而不用管道 rm
因此,您可以在开始之前查看将删除的内容。
如果您还想删除所有子目录和目录本身,则可以使用 rm -rf /path/to/directory
. 但在按return之前,请务必仔细检查您的线路, rm -rf
可能会导致大量的havock,例如,如果您在拥有超级用户权限时意外地在第一个斜杠后插入空格。..
由于这个问题是不断在谷歌的顶部,当我自己搜索这个:
其他答案遭受不同的问题:
其中一些包括 .
和 ..
这是嘈杂的,混乱的,令人讨厌的。
他们中的一些人忘记了隐藏的文件(以点开头的文件)。
它们不会以正确的(最深优先)顺序删除以允许目录删除。
它们会下降到其他(挂载)文件系统中,这通常是不需要的。
他们很难用额外的参数正确扩展(更多关于下面)。
find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
请注意,我添加了一个 -xdev
防止下降到坐骑的论点(如 /proc
等。).
-depth
或 -delete
?尽管人们不断贬低我,但这些方法有一个缺点:看起来它们的可扩展性不足以允许 -prune
ing子目录(而不会引入更多问题)。 与此方法相反,您可以插入
-not \( -path "${DIR}/subdir" -prune \)
在 -mindepth
排除的论点 subdir
删除其内容。
你可以 cd
进入目录,然后运行命令 rm *.*
就像在DOS,如果你还记得。
要删除当前目录,您可以使用 rm -d ./*
-d告诉删除目录。
请参阅这里的答案,这可以删除隐藏文件以及任何警告和删除目录本身https://stackoverflow.com/questions/43832107/delete-contents-but-not-directory-in-linux
我没有足够的声誉来添加一个真正的答案,但是当在bash中使用shopt-s dotglob&&rm/path/to/directory/*
解决方案时,(shopt-s dotglob&&rm/path/to/directory/*)
(带括号)将防止shopt-s dotglob
泄漏超出这一个命令。 (括号在子shell中运行包含的命令。)