如何在 bash 中仅匹配点文件?

Fra*_*lin 5 bash wildcards dot-files

rm -rf .*只会不会因为rm拒绝删除.而可怕地结束..

如何从全局模式中排除这些特殊目录?

这没有解决,dotglob因为我只想匹配以点开头的文件而不是所有文件。

mur*_*uru 5

对于bash,设置GLOBIGNORE特殊变量是一些非空值足以使其在扩展全局变量时.忽略..。来自Bash 文档

\n\n
\n

shellGLOBIGNORE变量可用于限制与模式匹配的文件名集。如果GLOBIGNORE设置,则将GLOBIGNORE从匹配列表中删除也与其中模式之一匹配的每个匹配文件名。如果nocaseglob设置了该选项,则执行与 中的模式匹配时GLOBIGNORE不考虑大小写。当设置\n且不为空时,文件名...始终被忽略 。GLOBIGNORE但是,设置GLOBIGNORE为非空值具有启用 dotglob shell 选项的效果,因此以\xe2\x80\x98.\xe2\x80\x99 开头的所有其他文件名都将匹配。

\n
\n\n

如果我们将其设置为.:..,则.和都..将被忽略。由于将其设置为任何非空也会得到此行为,因此我们不妨将其设置为.

\n\n

所以:

\n\n
GLOBIGNORE=.\nrm -rf .*\n
Run Code Online (Sandbox Code Playgroud)\n\n

(摘自我之前对 Ask Ubuntu 的回答。)

\n


归档时间:

查看次数:

1405 次

最近记录:

6 年,11 月 前