如何在bash中选择以显式名称开头的目录中的文件?

如何在bash中选择以显式名称开头的目录中的文件?,bash,shell,Bash,Shell,我有一个shell脚本,如下所示 dcacheDirIn="/mypath/" for files in `ls $dcacheDirIn | grep txt` do ..... done 我在这个目录中有一些.txt文件,其中一些以Data2012*.txt开头,另一些以Data2011*.txt开头。如何选择“Data2012”文件 编辑:我的坏消息是我把python文件弄混了。这肯定是shell脚本 在Python中,您可以使用glob库,如下所示: import glob for

我有一个shell脚本,如下所示

dcacheDirIn="/mypath/"
for files in `ls $dcacheDirIn | grep txt`
do
.....
done
我在这个目录中有一些.txt文件,其中一些以Data2012*.txt开头,另一些以Data2011*.txt开头。如何选择“Data2012”文件


编辑:我的坏消息是我把python文件弄混了。这肯定是shell脚本

在Python中,您可以使用
glob
库,如下所示:

import glob

for file2012 in glob.glob("/mypath/Data2012*.txt"):
    print file2012

使用Python 2.7进行测试在Python中,您可以使用
glob
库,如下所示:

import glob

for file2012 in glob.glob("/mypath/Data2012*.txt"):
    print file2012

使用Python 2.7进行测试,Python
glob
库具有该功能,并且还支持正则表达式。例如,你可以这样做:

for file in glob.glob('*2012.txt'):
    print file
这将打印与该表达式匹配的文件(假设您从同一目录运行它)。虽然它有堆加载功能,但您应该深入研究


编辑:固定缩进,需要更多字符。

python
glob
库具有该功能,并且还支持正则表达式。例如,你可以这样做:

for file in glob.glob('*2012.txt'):
    print file
这将打印与该表达式匹配的文件(假设您从同一目录运行它)。虽然它有堆加载功能,但您应该深入研究


编辑:固定缩进,需要更多字符。

您可以使用grep直接实现这一点:

dcacheDirIn="/mypath/"
for files in `ls $dcacheDirIn | grep -E 'Data2012.*\.txt'`
do
.....
done

grep
使用正则表达式过滤
ls
的输出。为grep提供的regex I将过滤出格式为
Data2012*.txt
的文件,如您所愿。

您可以使用grep直接实现这一点:

dcacheDirIn="/mypath/"
for files in `ls $dcacheDirIn | grep -E 'Data2012.*\.txt'`
do
.....
done
grep
使用正则表达式过滤
ls
的输出。我为grep提供的正则表达式将过滤掉格式为
Data2012*.txt
的文件,就像您想要的那样。

您可以试试这个

dcacheDirIn="/mypath/"
for files in `ls $dcacheDirIn | grep Data2012`
do
echo $files
done
要避免使用该名称的目录,请尝试

ls $dcacheDirIn -p | grep -v / | grep Data2012
你可以试试这个

dcacheDirIn="/mypath/"
for files in `ls $dcacheDirIn | grep Data2012`
do
echo $files
done
要避免使用该名称的目录,请尝试

ls $dcacheDirIn -p | grep -v / | grep Data2012

在bash中,通配符将为您完成ls的工作。 只用

dcacheDirIn="/mypath"
for file in $dcacheDirIn/Data2012*txt
do
   echo "File $file"
done

在bash中,通配符将为您完成ls的工作。 只用

dcacheDirIn="/mypath"
for file in $dcacheDirIn/Data2012*txt
do
   echo "File $file"
done


你有多确定这是python?@melwil相当肯定:)这绝对不是python。也许是bash脚本?当然看起来像bash!你为什么不grep
Data2012
来获取
Data2012
文件?你有多确定这是python?@melwil非常确定:)这绝对不是python。也许是bash脚本?当然看起来像bash!你为什么不grep
Data2012
来获取
Data2012
文件呢?很抱歉缩进问题,我是移动的,而且不好。谢谢@melwil。可惜我的答案现在已经无关紧要了:(嘿,不是你的错。别担心;-)甚至在移动设备上做这件事的道具!对于缩进的问题,我很抱歉,我是移动的,这不好。谢谢@melwil。可惜我的答案现在已经无关紧要了:(嘿,不是你的错。别担心;-)甚至在移动设备上做这件事的道具!那么,我如何选择Data2012文件?该循环仅存在名为contains
Data2012
的文件。那么,我如何选择Data2012文件?该循环仅存在名为contains
Data2012