我在主文件夹的多个子文件夹中存在数百个同名的文件。我想重命名他们。例如,文件夹1135_AS包含数百个子文件夹(具有唯一名称),其结构如下:
1135_AS / UOD-1_6975 /转录/鲑鱼/ quant.sf
我想将 quant.sf 重命名为唯一文件夹的名称
例如:
1135_AS / UOD-1_6975 /转录/鲑鱼/ quant.sf
应转换为:
1135_AS / UOD-1_6975 /转录/鲑鱼/ UOD-1_6975_quant.sf
和
1135_AS / URD-1_9901 /转录/鲑鱼// quant.sf
1135_AS / URD-1_9901 /转录/鲑鱼// URD-1_9901_quant.sf
答案 0 :(得分: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
或最后一个字段$NF
使用system(cmd)
中的awk
来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