从具有特定长度并以特定字符开头的目录中获取文件

时间:2019-11-01 02:39:44

标签: python

我想知道是否可以将两者结合起来搜索,同时以“ s”之类的特定字符开头来搜索特定长度。 我会用它来搜索角色:

ls -d /etc/[s]*

并搜索长度:

find /etc -maxdepth 1 -regextype egrep  -regex '.*/.{6}$'

是否可以将两者结合?谢谢你们

2 个答案:

答案 0 :(得分:1)

模式s?????将匹配以s开头的6个字符的文件名。在文件名通配符中,?与任何字符匹配。

您可以使用glob.glob()进行搜索。

import glob

files = glob.glob('/etc/s?????')

如果您正在寻找Shell解决方案,则可以使用相同的通配符:

ls -d /etc/s?????

find /etc -maxdepth 1 -name 's?????'

答案 1 :(得分:0)

如果要使用python解决方案,最简单的方法是过滤出长度为6个字符并以s开头的文件:

from os import listdir

files = [f for f in listdir("/etc") if len(f) == 6 and f.startswith("s")]

print(files)
# ['shadow', 'shells', 'subgid', 'subuid']

如果您确实需要正则表达式,则可以尝试如下操作:

from os import listdir
from re import match

files = [f for f in listdir("/etc") if match("^s.{5}$", f)]

print(files)
# ['shadow', 'shells', 'subgid', 'subuid']