重命名所有目录中的某些文件

时间:2014-10-04 16:03:25

标签: unix command-line rename

我有许多目录,所有这些目录都包含一个名为" 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

我怀疑在命令行上有一个聪明的方法可以做到这一点,但到目前为止我还没有被证明是聪明的。任何帮助表示赞赏。

1 个答案:

答案 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

经验教训;更加努力地寻找。 : - )