我有一个shell脚本,如下所示
dcacheDirIn="/mypath/"
for files in `ls $dcacheDirIn | grep txt`
do
.....
done
我在这个目录中有一些.txt文件,其中一些以Data2012 * .txt和一些Data2011 * .txt开头。如何选择“Data2012”文件?
编辑:我的坏我混淆了我的python文件。这肯定是shell脚本。答案 0 :(得分:1)
在Python中,您可以使用glob
库,如下所示:
import glob
for file2012 in glob.glob("/mypath/Data2012*.txt"):
print file2012
使用Python 2.7进行测试
答案 1 :(得分:1)
python glob
库具有该功能,它还支持正则表达式。所以,例如,你会这样做:
for file in glob.glob('*2012.txt'):
print file
这将打印匹配该表达式的文件(假设您从同一目录运行它)。它有一个堆负载更多的功能,你应该深入了解。
编辑:修复缩进,需要更多字符..
答案 2 :(得分:1)
您可以使用grep直接实现此目的:
dcacheDirIn="/mypath/"
for files in `ls $dcacheDirIn | grep -E 'Data2012.*\.txt'`
do
.....
done
grep
使用正则表达式过滤ls
的输出。我为grep提供的正则表达式将按照您想要的格式Data2012*.txt
过滤掉文件。
答案 3 :(得分:1)
你可以试试这个
dcacheDirIn="/mypath/"
for files in `ls $dcacheDirIn | grep Data2012`
do
echo $files
done
要避免使用该名称的目录,请尝试
ls $dcacheDirIn -p | grep -v / | grep Data2012
答案 4 :(得分:1)
在bash中,通配符将为你做ls的工作。 只需使用
dcacheDirIn="/mypath"
for file in $dcacheDirIn/Data2012*txt
do
echo "File $file"
done