如何使用ls排除文件?

How to exclude files using 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

仅包括以数字结尾且后跟文件扩展名的文件,但找不到任何此类文件。

extended globbing.

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

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