在Unix中命名具有特定模式的目录

时间:2014-05-13 15:34:06

标签: directory rename

如何通过交换目录名中的数字和单词来重命名目录。

e.g。 FRA-DEV_007583-K4C-RDF-1
FRA-DEV_007583-K4C源-8- FRA-DEV_007584-K4C-RDF-19 FRA-DEV_007584-K4C-RDF-8

输出应该是

FRA-DEV_007583-K4C -1- RDF
FRA-DEV_007583-K4C -8-源 FRA-DEV_007584-K4C-9-RDF FRA-DEV_007584-K4C-8-rdf

1 个答案:

答案 0 :(得分:0)

如果您将所有这些文件放在同一目录中,而其中没有其他文件,则可以使用此脚本:

#! /bin/bash

nums=(`ls $1 | cut -d- -f5`)
words=(`ls $1 | cut -d- -f4`)
files=(`ls $1 | cut -d- -f1-3`)
complete_files=(`ls $1`)

len=${#complete_files[@]}

for (( i=0; i<${len}; i++ ));
do
  newname=${files[$i]}-${nums[$i]}-${words[$i]}   
  mv $1${complete_files[$i]} $1$newname
done

将此脚本保存为rename.sh,位于文件所在目录的OUTSIDE目录中。然后执行:bash rename.sh path/to/your/files/不要忘记最后的斜杠,并先进行备份以防万一。