awk 删除偶数文件,留下奇数文件

awk 删除偶数文件,留下奇数文件

下面,awk我尝试在后面的数字为偶数时删除.bam和,并在 后面的数字为奇数时保留文件。 确实 执行了,但没有打印任何文件。 我添加了以进行验证,但会删除它们。 谢谢 :)。.bam.baiIonCode_IonCode_awkprint

使用 find 命令

find . -maxdepth 1 -type f | awk -F'[._]' '($NF=="bam" && !($(NF-1)%2)) || ($NF=="bam.bai" && $(NF-1)%2) {print "rm " $0}'

目录中的文件

IonCode_0241_19-000-Last-First.bam
IonCode_0241_19-000-Last-First.bam.bai
IonCode_0242_19-000-Last-First.bam
IonCode_0242_19-000-Last-First.bam.bai

脚本执行后剩余所需文件

IonCode_0241_19-000-Last-First.bam
IonCode_0241_19-000-Last-First.bam.bai

答案1

您将其.作为可能的字段分隔符,因此最后一个字段不可能包含a .–相反,它将是$NF == "bai" && $(NF-1) == "bam" && $(NF-2)...

有一个更简单的选项,不涉及 awk:

rm IonCode_[0-9][0-9][0-9][02468]_*.bam
rm IonCode_[0-9][0-9][0-9][02468]_*.bai

相关内容