【问题标题】:Rename files in subfolder using name of parent folder使用父文件夹的名称重命名子文件夹中的文件
【发布时间】:2018-08-21 03:50:40
【问题描述】:

我在主文件夹的多个子文件夹中有数百个同名文件。我想重命名它们。例如文件夹 1135_AS 包含数百个子文件夹(具有唯一名称),其结构如下:

1135_AS/Uod-1_6975/transcriptome/salmon/quant.sf

我想将 quant.sf 重命名为 唯一文件夹的名称

例如:

1135_AS/Uod-1_6975/transcriptome/salmon/quant.sf

应该转换为:

1135_AS/Uod-1_6975/transcriptome/salmon/Uod-1_6975_quant.sf

1135_AS/Urd-1_9901/transcriptome/salmon//quant.sf

1135_AS/Urd-1_9901/transcriptome/salmon//Urd-1_9901_quant.sf

【问题讨论】:

    标签: subdirectory batch-rename


    【解决方案1】:
    # cd into the parent dir, which is common:
    $ cd 1135_AS/  
    
    $ find . -type f -name quant.sf \
      | awk -F/ '{s=substr($0,0,length($0)-length($NF))}{system("mv " $0" "s$2"_"$NF)}'
    
    • 使用find 打印文件的完整路径。
    • s=substr($0,0,length($0)-length($NF)) 打印除
    • 之外的整个路径
    • quant.sf 或最后一个字段 $NFawk 中使用 system(cmd) 到 mv
      文件。

    删除system()可以看到脚本要做什么...它会打印出类似这样的内容,

    $ find . -type f -name quant.sf \
      | awk -F/ '{s=substr($0,0,length($0)-length($NF))}{print "mv " $0" "s$2"_"$NF}'
    mv ./Uod-1_6975/transcriptome/salmon/quant.sf ./Uod-1_6975/transcriptome/salmon/Uod-1_6975_quant.sf
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      相关资源
      最近更新 更多