将文件复制到相关目录中

将文件复制到相关目录中

我有很多名称格式相同的文件(四个字母数字字符、.pdb和一个数字),我想将它们复制到相应的目录中。

例如,在目录中home/Desktop/chain/file我有这些文件:

1b47_biounit1.pdb
1ca9_biounit1.pdb
1ca9_biounit2.pdb
1ca9_biounit3.pdb
5tr6_biounit9.pdb

home/Desktop/chain现在我已经在;下创建了很多目录。目录的名称是:

1b47_A
1b47_B
1ca9_A
5tr6_2

我想将文件目录中的文件复制到具有相同基本名称的目录中。结果是这样的:

1b47_A -> 1b47_biounit1.pdb
1b47_B -> 1b47_biounit1.pdb
1ca9_a -> 1ca9_biounit1.pdb 1ca9_biounit2.pdb 1ca9_biounit3.pdb
5tr6_2 -> 5tr6_biounit9.pdb

我对编程语言不是很熟悉,但我尝试使用以下代码:

cd home/Desktop/chain/file
for name in ./*.pdb; do
     for dir in "${name%.pdb}"*/; do
         cp "$name" "$dir"
     done
done

但我得到了不同的、不想要的结果。有人可以帮我吗?

我使用脚本,并且不手动执行此操作,因为有很多文件和目录。

答案1

希望它可以帮助你。

cd home/Desktop/chain/file
for name in $(find . -type d -depth 1 | xargs -I {} basename {} | cut -c-4 | uniq); do
        for dir in $(find . -type d -depth 1 -name "$name*"); do
                cp $name*.pdb $dir
        done
done

相关内容