我想递归地从特定目录中删除文件。所以,我用过
find . -wholename "*.txt" -delete
我们也可以使用删除文件
rm -rf *.txt
rm
使用和删除文件有什么区别find
??
我想递归地从特定目录中删除文件。所以,我用过
find . -wholename "*.txt" -delete
我们也可以使用删除文件
rm -rf *.txt
rm
使用和删除文件有什么区别find
??
find . -name abd.txt -delete
尝试删除abd.txt
目录树中某处命名的所有文件.
find . -wholename abd.txt -delete
尝试删除abd.txt
目录树中某处具有完整路径名的所有文件.
永远不会存在这样的文件:使用 时find .
,找到的所有文件的完整路径名都将以 开头./
,因此即使当前目录中名为的文件abd.txt
也将具有 path ./abd.txt
,并且不会匹配。
find . -wholename ./abd.txt -delete
将删除当前目录中名为abd.txt
.
find -wholename ./abd.txt -delete
也会这样做。
abd.txt
如果是非空目录,则删除将失败。
(我刚刚用 GNU find 4.6.0 尝试了上述方法;其他版本的行为可能有所不同。)
rm -rf abd.txt
也尝试abd.txt
在当前目录中删除,如果它是一个非空目录,它将删除它,以及其中的所有内容。
为此find
,您可以使用
find . -depth \( -wholename ./abd.txt -o -wholename ./abd.txt/\* \) -delete
虽然find -wholename GLOBPATTERN
尝试匹配当前目录下的每个文件(与深度无关),但您使用该命令的 glob仅与当前目录下直接rm
(深度 1)的文件匹配。
顺便提一句。除非您想递归删除目录,否则不需要-r
切换到(由于扩展名,我假设您只想删除常规文件)rm
.txt
find
与 ,一起使用-delete
,查找文件并删除它们。Find
命令接受查找文件的路径,然后-delete
标志删除在给定路径中找到的文件。所以,你可以说 find 更像是一种选择性删除
而rm -rf
命令无论如何都会递归删除文件/目录。这意味着rm
将删除特定路径下的所有文件和目录。-r
代表递归,-f
是强制删除。因此,rm
加上-rf
将继续删除目标路径下目录中的目录和文件,直到找不到更多。