我想知道是否可以将两者结合起来搜索,同时以“ s”之类的特定字符开头来搜索特定长度。 我会用它来搜索角色:
ls -d /etc/[s]*
并搜索长度:
find /etc -maxdepth 1 -regextype egrep -regex '.*/.{6}$'
是否可以将两者结合?谢谢你们
答案 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']