使用find命令regex选项查找.csv文件无结果的问题求助
解决find命令正则查找.csv文件无效的问题
问题根源
find的-regex参数是匹配完整文件路径,而非仅文件名,且不同正则类型支持的语法有差异:
- 命令
find . -regextype sed -regex '.csv$':仅匹配路径以.csv结尾,但实际文件路径是./xxx.csv,因此匹配不到 - 命令
find . -regextype sed -regex '(?<=/)(.*?).csv$':(?<=/)属于PCRE风格的正向预查语法,sed正则不支持该特性
正确正则写法
针对sed正则类型,要匹配完整路径中以.csv结尾的文件,可使用:
find . -regextype sed -regex '.*/[^/]*\.csv$'
各部分解释:
.*/:匹配路径中的目录前缀(比如./)[^/]*:匹配不含斜杠的文件名主体\.csv$:匹配以.csv结尾的文件名(.需转义,否则会匹配任意字符)
也可以换用posix-extended正则类型简化写法:
find . -regextype posix-extended -regex '.*/.*\.csv$'
测试结果
用你当前目录的文件测试,上述命令会返回所有.csv文件:
./bingoXandr.csv./Campaigns (1).csv./Campaigns.csv./catalogue.csv
内容的提问来源于stack exchange,提问作者Stackcans
相关产品推荐
相关产品推荐

