linux下如何利用文件夹内的文件名批量重命名文件夹

我有大量的文件夹,每个文件夹内都包含有特定的文件。现在我想用文件夹内的指定格式的文件的名字,来重命名文件夹的名称。请问这种脚本如何实现?
例如:文件夹名为 wilber.1643 ,文件夹内有一个文件为20130401.seed,如何利用脚本把文件夹的名字重命名为20130401.

上述文件在各个文件夹不重名,如果重名,更改文件夹可能有问题

不包含子文件夹的修改

测试了一个,可以执行

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-10-23

wilber.1643 目录里的文件名有什么规则,最好能多列出几个

#!/bin/bash
name=`find ./ -name "*.seed" |sort -n | awk -F "[/|.]" '{print $3 ":" $4}'`
for i in $name
    do
        a=`echo $i |awk -F ":" '{print $1}'`
        b=`echo $i |awk -F ":" '{print $2}'`
        mv ./"$a" "$b"
done

追问

您实验成功了吗,为什么我运行后报错?注意一下脚本是要放在文件夹外面运行的,因为有很多类似的文件夹,我想同时完成命名,如图右边展示的。

追答#!/bin/bash
name=`find ./ -name "*.seed" |sort -n`
for i in $name
    do 
    a=`echo $i | awk -F "/" '{print $2}'`
    b=`echo $i | awk -F "[/.]" '{print $5}'`
    mv ./"$a" "$b" && echo "rename $a - $b success!" || echo "failed!"
  done

相似回答