当有太多匹配文件时,bash如果您在命令行上包含 glob 模式,则 shell 会像中断一样
perl -pi -e 's/hi/bye/' too_many_files*
Run Code Online (Sandbox Code Playgroud)
您可以使用xargs、 gnuparallel或来解决此find问题,但对于复杂的命令,这些命令可能很难在引用方面正确使用,而且它们的效率也可能低于运行perl一次。
有没有办法使用 的perl内置通配支持来实现类似的功能?(这不起作用)
perl -pi -e 's/hi/bye/' 'manyfiles*' # <-- Does not work.
Run Code Online (Sandbox Code Playgroud)
正如此答案中所述,您可以使用BEGIN块perl(而不是 shell)来扩展文件列表:
在原来的基础上稍作修改:
将 globing 留给 perl 而不是 bash,后者有局限性,
Run Code Online (Sandbox Code Playgroud)perl -pi -e 'BEGIN{ @ARGV = glob(pop) } s/#//g' "*"或者当 Globed 目录中有空格时,
Run Code Online (Sandbox Code Playgroud)perl -MFile::Glob=bsd_glob -pi -e 'BEGIN{ @ARGV = bsd_glob(pop) } s/#//g' "*"
有关globvs的更多信息bsd_glob,请参阅这篇文章。
(这是故意重复的,因为我很难用我想到的搜索词快速找到答案。)
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |