glob.glob
和 os.walk
递归地获取与命令行参数 (sys.argv[1]
) 匹配的 glob 模式文件列表。问题是,bash (以及许多其他 shell) 会自动将 glob 模式扩展为文件名。
那么标准的 Unix 程序 (例如 grep -R
) 是如何做到这一点的呢?我知道它们不是用 Python 写的,但如果这是在 shell 层面发生的,那就无关紧要了,对吗?脚本有办法告诉 shell 不要自动扩展 glob 模式吗?看起来 set -f
可以禁用 globbing,但我不确定如何在足够早的时候运行它。
我看过Use a Glob() to find files recursively in Python?,但那并没有涵盖从命令行参数中获取 glob 模式的实际操作。
谢谢!
编辑:
类似 grep 的 Perl 脚本ack接受 perl 正则表达式作为其参数之一。因此,ack .*
会打印出每个文件的每一行。但是,.*
应该扩展到目录中的所有隐藏文件。我尝试阅读脚本,但我不懂 Perl;它是如何做到这一点的?