我已经看到了关于如何迭代多个文件扩展名的各种主题,但在大多数情况下,列表是定义的。
示例:
for file in ${arg}/**/*.{txt,h,py}
do
....
done可以看到,.TXT文件将被忽略。不幸的是,回答这个问题的人说它只对bash4有效。但是我的安装程序使用bash3.x。
对怎么做有什么想法吗?
发布于 2014-07-23 06:57:39
使用zsh代替:
setopt extendedglob
for f ($arg/**/*.(#i)(txt|h|py)(N.)) {
...
}**/:任意级别的子目录(#i)将为其余的glob打开不区分大小写的匹配(如ksh93中的~(i) )。(N.)是glob限定符。如果没有匹配的文件,N将不返回一个错误,而.只选择常规文件(相当于find's -type f)。您可以在其中添加一个D,以匹配点(隐藏)文件,然后下降到隐藏的目录(如默认的find )。https://unix.stackexchange.com/questions/146040
复制相似问题