我想在具有混合内容的目录中为所有没有后缀的文件添加后缀。
.txt
或.html
)这是我遇到麻烦的第一部分。
我正在使用glob
来获取所有文件。这是代码摘录:
my @files = grep ( -f, <*> );
-f
确保只添加文件,*
通配符允许所有名称。
但是如何重写它只能获取没有后缀的文件?或者至少,我如何清洗后缀文件数组?
答案 0 :(得分:2)
你可以用另一个grep声明:
my @files = grep !/\.\w{1,4}$/, grep -f, <*>;
# -------------------
或者你可以像鲍罗丁所指出的那样,在一个方面做到:
my @files = grep !/\.\w{1,4}$/ && -f, <*>;
您可以根据所拥有的后缀类型更改正则表达式以更好地适应。正则表达式在字符串的末尾查找与句点不匹配的文件,后跟1到4个字母数字字符。我选择了一个相当宽松的正则表达式来匹配多个可能的后缀。
答案 1 :(得分:2)
没有后缀的文件是名称中没有点的文件。
my @files = grep { -f and not /\./ } <*>;
答案 2 :(得分:1)
使用grep
,您只需添加正则表达式:
my @files = grep { !/\.\w+\z/ && -f } ( <*> );