unix:我可以删除目录中不包含文本的文件吗?

时间:2016-02-22 17:04:20

标签: unix

我可以删除不包含任何文本的目录中的文件吗?这些是扩展名为“.fasta”的文本文件。最初我正在运行这个脚本:

for g in `cat genenames.txt` ; do cat *${g}_*.fa > $g.fasta ; done

在一个看起来像的文件列表中:

  • id_genename_othername.fa

但是在某些目录中,并非列表中的所有基因名(genenames.txt)都具有匹配名称的文件。所以有时我会得到这样的信息:

cat: *genename_*.fa: No such file or directory 

上面的代码仍然生成一个'.fasta'文件,其中包含不存在的基因名称,我想将其删除。谢谢。

2 个答案:

答案 0 :(得分:0)

假设您的脚本使用#!/bin/bash,我就

shopt -s nullglob
while IFS= read -r pattern; do
    files=( *"$pattern"*.fa )
    if [[ "${#files[@]}" -eq 0 ]]; then
        echo "no files match pattern *$pattern*.fa"
    else
        cat "${files[@]}" > $pattern.fasta
    fi
done < genenames.txt

答案 1 :(得分:-2)

您是否尝试过以下操作?

for g in `cat genenames.txt` ; do cat *${g}_*.fa 2>/dev/null > $g.fasta ; done

这可以防止未发现的错误产生文件