如何在Shell中递归地在扩展名为.thrift的文件夹中找到所有指定文件?

时间:2019-03-07 06:59:37

标签: shell

目录结构如下:

├─thrift_master
   ├─Common
     └─common.thrift
   ├─folder2
     └─f1.thrift
   └─types.thrift
└─update.sh

我想使用thrift -nowarn -gen py

生成python-thrift软件包

这是我使用shell的尝试,它适用于我使用的是Common/*.thrift之类的绝对目录,如何使它递归工作?


cd `dirname $0`

TMP=thrift_master

#...

cd $TMP

for i in Common/*.thrift *.thrift folder2/*.thrift
do
        thrift  -nowarn -gen py $i
done

echo "update thrift_interface gen files..."


1 个答案:

答案 0 :(得分:1)

您可以在Unix / Linux系统上使用find实用程序:

cd thrift_master

find . -iname '*.thrift' -print0 |
while IFS= read -rd '' file; do
    thrift -nowarn -gen py "$file"
done
  • 使用-print0的{​​{1}}选项来获取由NUL字符分隔的输出,以解决带有空格/ glob字符的文件名。
  • 相应地,我们需要在find中使用-IFS=-d ''处理以NUL字符分隔的文件名。

PS:如果您是read,则可以使用流程替换

bash