删除除一个目录之外的所有 Vim 撤消文件

删除除一个目录之外的所有 Vim 撤消文件

我刚刚意识到.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~

是的,首先进行一次演练以确保您拥有正确的匹配项。

相关内容