Answers:
Linux不使用扩展名。由文件的创建者决定他是否希望名称具有扩展名。Linux查看第一个字节来确定它正在处理哪种文件。
要删除目录中的所有内容,请使用:
rm /path/to/directory/*
您可以使用该-r
选项,例如:
rm -r /path/to/directory/*
还可以删除要删除其内容的目录内的所有子目录(及其所有内容)。否则,它将显示错误消息,通知您未删除目录。
all files
;)*.*
表示.
名称中包含某个位置的所有文件
*a*
意味着零个或多个字符,a
然后是零个或多个字符。这将匹配文件名happy
,apple
,a
或la
。
删除文件夹及其所有内容(包括所有内部文件夹):
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/*
为避免此问题,可以使用'
单引号'
(不扩展外壳变量)或"
双引号"
(扩展外壳变量):
rm -rf "/path/to the/directory/"*
哪里:
rm
-代表“ 删除 ”-f
-代表“ force ”,例如,当您不想询问/提示是否要删除档案时,这很有用。-r
-代表“ 递归 ”,这意味着您要递归浏览每个文件夹并删除所有内容。rm -rf /path/to/directory/*
不会删除文件夹中的隐藏文件,例如.htaccess
。也许rm -rf /path/to/directory/.
吧?还没试过
rm -rf /path/to/directory/.*
仅删除指定目录中的隐藏文件。查看@danjjl对@Rinzwind答案的评论,以删除隐藏文件,然后shopt -s dotglob
再运行rm -rf /path/to/directory/*
。
rm -rf /path/to/directory/.*
在我的系统上,导致中的项目删除/path/to
。幸运的是,我刚刚将全部数据备份到了单独的磁盘上。不用说,rm -rf /path/to/directory/.*
除非您已将整个计算机备份到单独的/安全的位置,否则不要发出命令!
要删除目录中的所有文件(包括隐藏文件和子目录),请运行:
rm -rf /path/to/directory/{*,.*}
./
和../
,但仍会删除隐藏的文件。
rm -r $(pwd)/{*,.*}
如果您只想删除/ path / to /目录中的文件,则可以执行
find /path/to/directory -type f -print0| xargs -0 rm
要么
find /path/to/directory -type f -exec rm '{}' \;
您可以使用进行加载find
,优点是您可以列出找到的内容,而无需通过管道将其发送到,rm
因此您可以查看在开始之前要删除的内容。
GNU find
作为-delete
谓词。如果您仍要使用-exec
,则替换\;
为+
会将rm
呼叫收集在一起,从而提高效率。
要删除目录中的所有文件和目录(包括隐藏的文件和目录),可以尝试以下操作:
删除文件夹,然后重新创建
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
如果您还想删除所有子目录和目录本身,则可以使用rm -rf /path/to/directory
。但是请务必在按回车键之前仔细检查您的行,这rm -rf
也会引起很多麻烦,例如,如果您在具有超级用户权限的情况下不小心在第一个斜杠后插入空格...
由于当我自己搜索此问题时,该问题一直是Google的首要问题:
其他答案有不同的问题:
其中一些包括.
和..
它是嘈杂,混乱,烦人。
其中一些忘记了隐藏文件(以点开头的文件)。
它们不会以正确的顺序(最深优先)删除,以允许目录删除。
它们属于其他(挂载)文件系统,这通常是不希望的。
使用额外的参数很难对其进行适当的扩展(更多内容请参见下文)。
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
etc.)。
-depth
和-delete
?尽管人们一直对此表示不满,但是这些方法也有缺点:它们似乎没有足够的可扩展性以允许-prune
子目录(而不会引入更多问题)。与这种方法相比,您可以插入
-not \( -path "${DIR}/subdir" -prune \)
在-mindepth
排除要subdir
删除其内容的参数之前。
-depth
标记find
。
-delete
和with一起find
使用?-delete
是深度优先。你已经假定非POSIX find
用-printf
,所以你还不如用-delete
或-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
...但我的方法适用吗?为什么?
shopt -s dotglob
之前运行rm (...)