我想查看在Linux中执行rm时将删除哪些文件。大多数命令似乎都具有试运行选项来显示此类信息,但我似乎找不到rm的此类选项。这有可能吗?

评论

我还想看看哪些文件会因缺少权限而产生错误。

#1 楼

假设您要运行:

rm *.txt


您可以运行:

echo rm *.txt


,甚至: br />
echo *.txt


以查看rm将删除哪些文件,因为它是扩展*.txt的外壳,而不是rm

这是唯一一次如果您要递归删除文件和目录,则可以使用rm -r而不是find,例如

find . -name "*.txt" -print


然后根据需要进行更改,将rm -r更改为-print

find . -name "*.txt" -delete


评论


找到是IMO的不错选择。而且,如果您要图形表示,请使用树。

–噪音很大
2012年7月25日在9:49

几乎完美。找 。 -name“ * .txt” -delete似乎不是递归的。删除了所有文件,但没有删除-print中列出的目录

–奥斯卡·戈德森(Oscar Godson)
13年7月21日在9:17

@OscarGodson假定删除文件后目录保留为空,则可以使用find删除它们。类型d-空-删除

– datguy
17年1月3日在20:08

@OscarGodson-查找不会删除仍包含文件的目录(等同于rm dir /,而没有-r)。您必须先清空目录-或使用find -exec rm以及相应的选项来执行此操作。例如找 。 -depth -name“ * .txt” -exec rm -r {} +

– shalomb
17年4月17日在19:08

使用echo rm * .txt方法似乎有一个缺点。它将结果显示在串联列表中(一个长字符串,前一个文件之后是一个文件),而不是垂直列表。有什么方法可以使输出显示在垂直列表中(每行一个文件)? (更新:我发现find方法可以完成我所请求的操作。因此,我将使用该方法。)

– inspirednz
17-10-10在4:27



#2 楼

您可以说:

rm -i


以交互方式运行它,因此rm将提示您确认是否应删除每个文件。您可以对每个文件回答否,以查看哪些文件将受到影响。

评论


对于大量文件而言,这相当困难。

– Cory Klein
2011年2月7日在20:13

是的rm -i#评论必须达到最小评论长度

–约书亚
16年5月4日在18:46

#3 楼

您可以使用ls列出将被rm删除的所有文件:

ls ../path/*.txt


如果需要列出以查看将被递归删除的文件rm ,然后将-R标志与ls结合使用:

ls -R ../path/*.txt


评论


好点子。尽管如果您知道嵌套的级别,那么可以通过ls * / * / *。txt来实现

–Veneet Reddy
18年7月24日在9:43

你是对的。使用-R选项。

–Veneet Reddy
18年7月24日在10:32

#4 楼

只是想晚点指出约书亚在评论中提到的一种方便的解决方案:
yes n | rm -i <whatever files you want to delete>

它以交互模式运行rm,它会提示要删除的每个文件ay / n响应,但通过yes n会自动拒绝每个文件的提示。输出不是很漂亮,但是可以通过一点清理来解析。