我想wordpress-891.sql
从当前目录(而不是子目录内)中删除任何看起来像的文件。
请问会rm wordpress-*.sql
不会成功,还是会从子目录中删除匹配项?
rm
不进行文件名扩展... rm "foo*"
将尝试删除名称中带有文字星号的文件。
我想wordpress-891.sql
从当前目录(而不是子目录内)中删除任何看起来像的文件。
请问会rm wordpress-*.sql
不会成功,还是会从子目录中删除匹配项?
rm
不进行文件名扩展... rm "foo*"
将尝试删除名称中带有文字星号的文件。
Answers:
是的,它可以为您解决问题,并删除当前目录中具有该模式的所有文件。不,它不会删除子目录中的文件。
每当您不确定运行以下命令时会发生什么:
rm wordpress-*.sql
然后使用ls
以下命令运行它:
ls wordpress-*.sql
您在输出中看到的文件将被删除。
当您尝试获取诸如:的列表时foo*
,最好使用-d
switch with ls
来防止列出名为foobar/
etc等目录的文件。
ls -d foo*
此技巧适用于不用于递归执行此任务的命令。
您可以做的另一件事是键入所需的输入,例如:wordpress-*
然后按Ctrl+ Alt+ *,现在所有匹配项都将在命令前面自动键入。
printf "%s\n" wordpress-*.sql
echo rm file*
。尤其要查找恶意文件名,例如-rf
rm ./*
或来更安全地覆盖这些内容rm -- *
。
xargs -0
@DavidFoerster
ls foo*
,你有一个名为目录foobar
,你也可以得到的该目录的内容列表,所以普通的ls
是不是真的到了什么是最好的方式rm
将打击
不,rm
不会通过子目录递归。
有关删除子目录中文件的方法,请参阅删除所有子目录中的匹配文件-SuperUser。
如果您担心意外删除重要的内容,请使用gvfs-trash
(将文件发送到垃圾箱)而不是rm
(永久删除文件)。
gvfs-trash
提及,今天学到的东西几乎没有用过……
如果要查找和删除所有匹配的文件(例如)wordpress-*.sql
,可以使用find
command。:)
例如,您想使用wordpress-*.sql
下删除所有匹配的文件test_dir
,请执行以下操作。
cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;
只要find
程序真正找到匹配的文件,它就会尝试在after -exec
选项之后执行命令。在这种情况下,rm -f {}
将执行{}
并将其更改为匹配文件名。例如
rm -f wordpress-169.sql
您还可以使用-maxdepth
选项设置子目录的深度。
cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;
请注意,您必须-maxdepth
在其他选项之前指定选项。否则,您可能会遇到真正不希望看到的结果。
-maxdepth
。使用-exec rm -f {} +
而不是-exec \;
,或者更好,只是-delete