tur*_*tle 6 vim find wildcards rm
我刚刚意识到.un~
我的文件系统周围散布着大量 Vim 撤消 ( ) 文件。我想删除所有这些文件,除了一个目录 - ~/.tmp
. 我的第一个问题是我似乎找不到删除这些东西的 Unix 命令。例如,我有一个如下所示的文件名:
.myfile.txt.un~
我试过,rm -f *.un
,rm -f *.un\~
,rm -f *.un*
,等我似乎无法找到可以删除这些文件中的任何命令。如何删除这些文件?
其次,我想用 find 写一个命令,它可以访问我所有的目录并删除这些文件,~/.tmp
目录除外。我很害怕执行这个命令,以防它出错。任何人都可以帮助构建一个 find 命令来做到这一点吗?在此先感谢您的帮助!
这些命令不起作用,因为通配符模式会忽略点文件(名称以字符开头的文件.
),除非点明确出现在模式中。所以*.un~
匹配yourfile.txt.un~
但不匹配.myfile.txt.un~
,而.*.un~
匹配.myfile.txt.un~
。
您应该能够为此使用find(1)
(find
通配符匹配不会专门处理点文件):
find / -name "*.un~" -not -path "~/.tmp/*" -delete
Run Code Online (Sandbox Code Playgroud)
这告诉 find 搜索/
所有*.un~
不匹配的文件~/.tmp
并删除它们。如果你脱掉-delete
它只会输出一个列表,所以你可以检查并确保它不会删除错误的东西。您可能还想-mount
在那里投入以阻止它搜索您已安装的其他文件系统