我实际上有一个目录,其中有不同的文件,例如:
因此在目录中说:/path1/ncbi_genomes
Sp_1.fna
Sp_2.fna
Sp_3.fna
Sp_4.fna
Sp_5.fna
另一个目录包含如下文件夹:/path2/path2.1
Sp_1
Sp_2
Sp_3
Sp_4
Sp_5
所以我想要做的是把.fa
目录中存在的这些文件放在目录/path1/ncbi_genomes
中相应的文件夹中/path2/path2.1
对应的意思是文件的名字和目录中文件夹的名字相同/path2/path2.1
我应该得到最后:
Sp_1
Sp_1.fna
Sp_2
Sp_2.fna
Sp_3
Sp_3.fna
Sp_4
Sp_4.fna
Sp_5
Sp_5.fna
我尝试了for i in *; do mv
$i.fna /path2/path2.1/$i/;
done` 但是没有用。
感谢您的帮助。
答案1
它不起作用,因为您的$i
内容包含.fna
。删除扩展它应该可以工作。
尝试这个,
for i in *; do
mv "$i" "/path2/path2.1/${i%.*}";
done
如果路径不存在,则mkdir -p "/path2/path2.1/${i%.*}"
在之前运行mv
。