我想递归地从特定目录中删除文件。所以,我用过
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将继续删除目标路径下目录中的目录和文件,直到找不到更多。