我可以删除不包含任何文本的目录中的文件吗?这些是扩展名为“.fasta”的文本文件。最初我正在运行这个脚本:
for g in `cat genenames.txt` ; do cat *${g}_*.fa > $g.fasta ; done
在一个看起来像的文件列表中:
但是在某些目录中,并非列表中的所有基因名(genenames.txt)都具有匹配名称的文件。所以有时我会得到这样的信息:
cat: *genename_*.fa: No such file or directory
上面的代码仍然生成一个'.fasta'文件,其中包含不存在的基因名称,我想将其删除。谢谢。
答案 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
这可以防止未发现的错误产生文件