Unix命令删除目录中的所有文件但保留目录。

9
我正在寻找一个Unix命令,用于删除目录内所有文件而不删除目录本身。请注意,该目录不包含子目录。
8个回答

10
rm -i <directory>/*

这应该可以解决问题。

编辑:为了安全起见加入了-i选项。目录应该是完整的或相对的路径(例如/tmp/foo../trash/stuffs)。


有没有一种方法可以在不提供路径的情况下删除文件?也就是说,从您当前所在的目录中删除文件? - BIOS
当然,您可以始终进入您的目录,然后执行“rm -i *”命令。请注意,“-i”标志将强制确认每个删除操作,这只是为了安全起见(如果您在命令行中放错了“/”并提供了“-r”标志,则会发生不良事件...)。 - BigMike
我正在使用 rm -r * 命令,但是它在每个文件删除时都要求确认。为了停止这种情况,应该使用 rm -rf * 对吗?我试图删除当前目录中的所有内容。 - BIOS
-r 表示递归删除,-f 强制删除,假设 rm 命令没有被别名化,我会使用 rm -f *。 - BigMike
rm命令当前别名为“rm -i”。这会影响强制删除吗? - BIOS
“rm -i”听起来像是一个可怕的建议,如果有人想删除“所有”文件,至少如果超过三个文件。没有人喜欢按下y键确认每个单独的删除。 - ThiefMaster

6

尝试

rm -r yourDirectory/*

它会删除“yourdirectory”目录中的所有文件。


有没有一种方法可以在不提供路径的情况下进行删除?例如,从你当前所在的目录中删除? - BIOS
我不建议Unix新手使用-r开关,如果操作者在命令行上错误地放置了一个斜杠呢? - BigMike
OP中提到的子文件夹不存在。 - BIOS
只要有人在命令行上放错一个“/”符号,@Amxx就会出现问题。根据问题的描述,我猜测OP不熟悉Unix/Linux命令行,因此建议使用相对安全的命令。在使用-f标志的同时加上-r选项可能会导致非常危险的情况发生(毕竟我们不知道这个系统是如何配置的,他是否以root用户身份运行等)。 - BigMike
这就是为什么我从未告诉他使用-rf的原因,我认为-r而不带-f并不那么危险,有时新手会想知道为什么rm不能删除子文件夹。 - Amxx
显示剩余2条评论

4
你可以使用find /path/to/your/folder/ -delete来删除该文件夹中的所有内容。
使用通配符rm会因为文件过多而无法运行(“参数列表太长”),而使用此方法不论有多少文件都可以正常运行。
你也可以让它只删除文件但保留任何子目录:
find /path/to/your/folder/ -type f -delete

您还可以指定任何其他标准find支持以限制“结果”。

这是最佳答案,因为它保留了目录结构。 - Pinaki Mukherjee
1
这个答案最接近正确的答案,因为其他所有提议的解决方案都忽略了隐藏文件(以“。”前缀)。但是,就目前而言,“find”命令也会对命令行参数进行操作,除非您指定“-mindepth 1”。加上这个选项后,该解决方案就是正确的。 - Parakleta

2

如果您想删除当前目录下的所有文件,可以使用rm *命令。

如果要从特定目录中删除文件,请键入rm /path/*命令。


2
如果您在希望删除所有文件的目录中,则以下命令可正常工作:
rm *

1
如果您想删除所有文件和目录,也就是所有东西,请尝试以下操作:
rm -rf *

0

这会对你有所帮助,

rm path/*

例如:

rm ../mydir/*

在这个命令中,如果mydir有任何子目录!它将会引发错误消息并跳过该子目录,并删除主目录中其余的文件。

0

你可以使用rm -r /UrDir/*.*命令。

这将忽略子目录中的文件。


只是试图提高可读性,但注意到了,谢谢。 - HoldOffHunger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接