我的文件结构的简化示例是:
/Assemblies/A_velvet/contigs.fasta
/Assemblies/A_velvet/info.log
/Assemblies/BB_velvet/contigs.fasta
/Assemblies/BB_velvet/info.log
我正在尝试编写一个可以传递Assemblies目录的脚本 - 然后它将:
-
循环遍历每个子目录(A_velvet,BB_velvet) - 取应变名称(A,BB)将其作为前缀添加到所有文件中(即A_contigs.fasta,A_file.log) .
-
在contigs.fasta文件中的fasta标头中添加相同的前缀 . 也许使用sed命令替换('s/>NODE/>$/g')?
我发现了很多非常密切相关的问题,但似乎无法让它们发挥作用 . 很感谢任何形式的帮助!这里是我到目前为止的代码:
#!/bin/bash
#Run with: ./test.sh <assembly_directory>
#dir= directory with all assemblies inside it
dir=$1
for subdir in $dir
do
if [ -d "${subdir}" ]; then
name=`basename $subdir|cut -d '_' -f 1`;
echo "${subdir} name ${name}"
for * in $subdir;
`do mv "$file" "$subdir/${name}_$(basename "$file")"; done
fi
done
1 回答
循环遍历目录内容的方法不起作用 . 在第一种情况下,循环中唯一的项是$ dir . 我不确定你在第二种情况下要做什么 . 尝试这样的事情: