我有许多目录,所有这些目录都包含一个名为" accepted_hits.bam"的文件。我想将每个文件重命名为" accepted_hits_ID.bam",其中ID对应于在其中找到文件的目录名称。例如,目录的名称如下:
drwxr-xr-x 3 fr2259 ac_lab 249 Oct 4 04:33 0
drwxr-xr-x 4 fr2259 ac_lab 76 Oct 3 20:16 1
drwxr-xr-x 4 fr2259 ac_lab 76 Oct 3 20:29 10
drwxr-xr-x 4 fr2259 ac_lab 76 Oct 3 20:30 11
drwxr-xr-x 3 fr2259 ac_lab 249 Oct 3 20:03 12
drwxr-xr-x 4 fr2259 ac_lab 76 Oct 3 20:52 13
我希望将accepted_hits文件命名为
accepted_hits_0.bam
accepted_hits_1.bam
等
我怀疑在命令行上有一个聪明的方法可以做到这一点,但到目前为止我还没有被证明是聪明的。任何帮助表示赞赏。
答案 0 :(得分:0)
是的,想通了。在我最初搜索过去的stackoverflow问题时,我错过了这个: Rename files in multiple directories to the name of the directory
我使用该帖子的建议来编写命令:
for subdir in *; do mv $ subdir / accepted_hits.bam accepted_hits_ $ subdir.bam;完成的;
导致以下结果:
drwxrwxr-X。 2 fr2259 ac_lab 0 Oct 4 12:19 0
drwxrwxr-X。 2 fr2259 ac_lab 0 Oct 4 12:19 1
drwxrwxr-X。 2 fr2259 ac_lab 0 Oct 4 12:19 2
drwxrwxr-X。 2 fr2259 ac_lab 0 Oct 4 12:19 3
-rw-R - R--。 1 fr2259 ac_lab 4750137 10月4日12:11 accepted_hits_0.bam
-rw-R - R--。 1 fr2259 ac_lab 95087 10月4日12:18 accepted_hits_1.bam
-rw-R - R--。 1 fr2259 ac_lab 1095044 10月4日12:18 accepted_hits_2.bam
-rw-R - R--。 1 fr2259 ac_lab 470320 10月4日12:18 accepted_hits_3.bam
经验教训;更加努力地寻找。 : - )