将文件移动到几乎相同模式的特定文件夹中

将文件移动到几乎相同模式的特定文件夹中

我实际上有一个目录,其中有不同的文件,例如:

因此在目录中说:/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

相关内容