Unix 与x27之间的差异;查找-删除';和';rm-rf';?
我想递归地删除特定目录中的文件。所以,我用了Unix 与x27之间的差异;查找-删除';和';rm-rf';?,unix,delete-file,rm,Unix,Delete File,Rm,我想递归地删除特定目录中的文件。所以,我用了 find . -wholename "*.txt" -delete 我们还可以使用删除文件 rm -rf *.txt 使用rm和find删除文件有什么区别?查找-name abd.txt-delete尝试删除目录树中名为abd.txt的所有文件 find-wholename abd.txt-delete尝试删除目录树中某个位置的完整路径名为abd.txt的所有文件 这样的文件将永远不存在:当使用find.时,找到的文件的所有完整路径名都将以/开头
find . -wholename "*.txt" -delete
我们还可以使用删除文件
rm -rf *.txt
使用
rm
和find
删除文件有什么区别?查找-name abd.txt-delete
尝试删除目录树中名为abd.txt
的所有文件
find-wholename abd.txt-delete
尝试删除目录树中某个位置的完整路径名为abd.txt
的所有文件
这样的文件将永远不存在:当使用find.
时,找到的文件的所有完整路径名都将以/
开头,因此即使当前目录中名为abd.txt
的文件也将具有路径/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-深度\(-wholename./abd.txt-o-wholename./abd.txt/\*\)-delete
当find-wholename GLOBPATTERN
尝试匹配当前目录下的每个文件时(与深度无关),使用rm
命令的glob仅与直接的文件匹配(深度1)在当前目录下
顺便说一句,您不需要切换到rm
的-r
,除非您希望递归删除目录(由于.txt
扩展名,我假设您只想删除常规文件)查找与-delete
一起使用,查找并删除文件Find
命令在路径中查找文件,然后使用-delete
标志删除在给定路径中找到的文件。因此,您可以说find更像是一种选择性删除
而rm-rf
命令会递归地删除文件/目录,无论发生什么情况。这意味着rm
将删除特定路径上的所有文件和目录-r
表示递归,-f
表示强制删除。因此,rm
和-rf
将继续删除目标路径上目录中的目录和文件,直到它找不到更多。
使用find
可以更具体地说明要删除哪些文件,但最终都会对要删除的文件调用unlink()
。好的。那么使用“查找-删除”和“rm-rf”进行删除有什么区别呢?使用find…
还可以扫描子目录,而使用rm
只扫描当前目录中的文件,而不扫描子目录中的文件。@MisterJack:with-r
,rm
也会删除子目录。@reinierpost我的评论是针对@Aashish P的。-r
用于递归删除文件的内容(如果该文件是目录),而不是扫描子目录。@MisterJack:从技术上讲,文件的内容实际上不在该文件所在的目录内(目录只包含一个文件名和一个指向该文件的指针),因此实际发生的是一次删除所有内容的扫描,类似于find.-depth-exec rm\{}+