【问题标题】:Rename certain files within all directories重命名所有目录中的某些文件
【发布时间】:2014-11-29 10:25:15
【问题描述】:

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

并且我想要命名接受的_hits 文件

accepted_hits_0.bam

accepted_hits_1.bam

等等

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

【问题讨论】:

    标签: unix command-line rename


    【解决方案1】:

    好吧,想通了。在我最初搜索过去的 stackoverflow 问题时,我错过了这个: Rename files in multiple directories to the name of the directory

    我使用该帖子中的建议来编写命令:

    对于 * 中的子目录;做 mv $subdir/accepted_hits.bam 接受_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 Oct 4 12:11 accepted_hits_0.bam

    -rw-r--r--。 1 fr2259 ac_lab 95087 Oct 4 12:18 accepted_hits_1.bam

    -rw-r--r--。 1 fr2259 ac_lab 1095044 Oct 4 12:18 accepted_hits_2.bam

    -rw-r--r--。 1 fr2259 ac_lab 470320 Oct 4 12:18 accepted_hits_3.bam

    经验教训;更努力地搜索。 :-)

    【讨论】:

      猜你喜欢
      • 2014-05-16
      • 2013-08-15
      • 2015-02-28
      • 2014-11-08
      • 2014-10-09
      • 2013-08-20
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      相关资源
      最近更新 更多