使用regex查找多个文件扩展名的命令

问题描述 投票:9回答:1

我想知道在find命令中是否可行。我试图找到具有以下扩展名的所有特定文件,然后它将是SED。这是我当前的命令脚本:

find . -regex '.*\.(sh|ini|conf|vhost|xml|php)$' | xargs sed -i -e 's/%%MEFIRST%%/mefirst/g'

不幸的是,我对正则表达式并不熟悉,但这就是我需要的东西。

regex file sed find xargs
1个回答
8
投票

我在评论中看到你发现了如何使用标准的find -regex RE来逃避它,但你也可以指定一种正则表达式来支持它而没有任何转义,使它更容易辨认:

GNU findutils(Linux)中,使用-regextype posix-extended

find . -regextype posix-extended -regex '.*\.(sh|ini|conf|vhost|xml|php)$' | ...

在BSD find(FreeBSD findMac OS X find)中,使用-E

find . -E -regex '.*\.(sh|ini|conf|vhost|xml|php)$' | ...

POSIX spec for find根本不支持正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.