对编号文件进行排序以执行程序

时间:2014-04-16 16:29:58

标签: bash

我有许多格式相同的文件:mubunching-100302.0003.001_1c,mubunching-100302.0005.001_1c ...

我想向程序提供许多具有最小值的文件,例如:只有索引* .0005。*和更高版本的文件:

python Code.py mubunching-100302.0005.001_1c mubunching-100302.0008.001_1c ...

我对bash很新,不知道从哪里开始。感谢您提供任何帮助和建议!

2 个答案:

答案 0 :(得分:1)

您可以获取符合条件的所有文件的列表,如下所示:

ls | awk -F. '$2 >= 5 {print}'

这是awk将第二个.分隔字段与5进行比较,并且只打印出这个名称的名称。如果你想用Python脚本处理这些文件:

    ls | awk -F. '$2 >= 5 {print}' | xargs python Code.py

例如,给定一个包含以下内容的目录:

$ ls
mubunching-100302.0002.001_1c  mubunching-100302.0005.001_1c
mubunching-100302.0003.001_1c  mubunching-100302.0008.001_1c

上面的第一个命令将产生:

$ ls | awk -F. '$2 >= 5 {print}'
mubunching-100302.0005.001_1c
mubunching-100302.0008.001_1c

答案 1 :(得分:1)

您可以使用findawk获取所需文件名列表:

find . -type f -name "mubunching*" | awk -F'[.]' '$(NF-1)>=5'

要将列表传递给您的程序,请使用进程替换:

python Code.py $(find . -type f -name "mubunching*" | awk -F'[.]' '$(NF-1)>=5')