我刚刚意识到.un~
我的文件系统中散布着大量的 Vim undo () 文件。我想删除除一个目录之外的所有这些文件 — ~/.tmp
.我的第一个问题是我似乎找不到 Unix 命令来删除这些东西。例如,我的文件名如下所示:
.myfile.txt.un~
我已经尝试过,,,,rm -f *.un
等等rm -f *.un\~
,rm -f *.un*
但我似乎找不到任何可以删除这些文件的命令。我怎样才能删除这些文件?
其次,我想编写一个带有 find 的命令,它可以访问我的所有目录并删除这些文件(目录除外)~/.tmp
。我很害怕执行这个命令,以防它出错。任何人都可以帮助构建一个 find 命令来执行此操作吗?先谢谢您的帮助!
答案1
这些命令不起作用,因为通配符模式省略点文件(名称以字符 开头的文件.
)除非点明确出现在模式中。所以*.un~
匹配yourfile.txt.un~
但不匹配.myfile.txt.un~
,而.*.un~
匹配.myfile.txt.un~
。
您应该能够使用find(1)
此功能(find
通配符匹配不会特殊对待点文件):
find / -name "*.un~" -not -path "~/.tmp/*" -delete
这告诉 find 搜索/
所有*.un~
不匹配的文件~/.tmp
并将其删除。如果你关闭-delete
它只会输出一个列表,所以你可以检查并确保它不会删除错误的东西。您可能还想-mount
在那里添加以阻止它搜索您已安装的其他文件系统
答案2
*
不扩展点文件。你必须说例如:
rm ./.*.un~
如果你使用find
,这可能是最简单的,我会使用
find -iname ".*.un~" ...
代替:
find -iname "*.un~" ...
因为后者会匹配foo.un~
以及.foo.un~
。
是的,首先进行一次演练以确保您拥有正确的匹配项。