如何使用ls排除文件?

时间:2015-05-27 14:33:24

标签: bash ls

我正在使用我编写的python脚本从ls获取一些标准输入,并将数据加载到该路径描述的文件中。它看起来像这样:

    ls -d /path/to/files/* | python read_files.py

文件具有一定的名称结构,基于它们中的数据,但都存储在同一目录中。我想要使​​用的文件具有名称结构A<fileID>_###.txt(其中###总是有3位数字)。我只需将上面的内容稍微更改为ls -d /path/to/files/A*即可完成获取以A开头的文件。但是,有些文件有一个名为B的后缀标志(所以文件看起来像A<fileID>_###B.txt),我不想包含那些。

所以,我的问题是,有没有办法排除那些以...B.txt结尾的文件(或者只包含以数字结尾的文件的方式)?我想到了一些影响:

    ls -d /path/to/file/R*%d.txt

只包含以数字结尾的文件,后跟文件扩展名,但找不到任何类型的文档。

2 个答案:

答案 0 :(得分:3)

你可以试试这个:ls A*[^B].txt

答案 1 :(得分:1)

使用extended globbing

shopt -s extglob
ls R*!(B).txt