红联Linux门户
Linux帮助

将某一文件夹内所有文件命名为另一文件夹内所有名字

发布时间:2013-01-30 17:13:46来源:红联作者:shenanlinux
我想将某一个目录内所有文件重命名为与另一文件夹内所有文件名相同,但始终不得解,烦请高手指点,谢谢!
count=0
i=0

for path in $1/*;
do
fileName=$(basename $path)
fname=${fileName%.*}
fExtension=${fileName#*.}

array_fileName[count]=${fileName}
let count++
done

for path in $2/*;
do
fileName=$(basename $path)
fname=${fileName%.*}
fExtension=${fileName#*.}

#echo $fileName
#rename "y/$fileName/${array_fileName[$i]}/" "$fileName"
#echo $fileName
#echo ${array_fileName[$i]}
#echo $i
#echo " "
mv $fileName ${array_fileName[$i]}
let i++

done
报错如下:mv: 在"WALLPAPER_WORK.JPG" 后缺少了要操作的目标文件
文章评论

共有 2 条评论

  1. 相思爱文 于 2013-01-31 23:26:12发表:

    问题描述不是很清楚,具体命名顺序如何设定?

    如果是以ls后显示的顺序更名,那就简单了
    目录a内的文件重命名为目录b内文件名相同
    在当前目录上执行
    ls a >lista
    ls b >listb
    建文件test.sh
    for i in `cat ../lista`
    do
    read j
    mv $i $j
    done
    在目录a中执行test.sh<../lishb 就行了

  2. Intercon 于 2013-01-31 08:56:04发表:

    帮顶下