使用bash脚本文件重命名(Rename files using bash script)

2019-09-18 07:45发布

我有一个包含大量照片的文件夹中执行bash脚本集,并依次缝合他们到基于用户输入的全景。 一旦生成完成,输出文件重命名为$x-pano.jpg和移动一个文件夹更高。

我的问题是号码前缀是基于脚本的顺序执行,这意味着所有的文件获得改名1-pano.jpgn-pano.jpg基于脚本执行过程中产生全景的数量。

我如何修改重命名过程看存储文件夹,并得到最大的$x ? 我想通过1递增该号码,作为文件的数字前缀使用。 我当前的代码是

//get the list of files in directory and sort in increasing order
$filelist=$(find ../ -maxdepth 1 -type f | sort -n)

//get number of files
$length=${filelist[@]}

//get the last file
$lastFile=${fileList[$((length-1))]}

将得到的文件列表,排序按升序排列,并从列表中的最后一个文件。 这是我卡住。 使用-作为分隔符,我怎么能捕捉当前值?

Answer 1:

你可能寻找${var%%foo}构建,这条最长的foo从一个变量的末尾 :

$ F=1-pano.jpg
$ echo ${F%%-pano.jpg}
1
$ F=1222-pano.jpg
$ echo ${F%%-pano.jpg}
1222

尝试lastNum=${lastFile%%-pano.jpg}



Answer 2:

假设这仅仅是一个重命名任务:

$ find jason-pics/ -type f
jason-pics/other.jpg
jason-pics/somefile.jpg
jason-pics/mountain.jpg
jason-pics/car.jpg

重命名:

i=0 
for jfile in $(find jason-pics/ -type f)
    do 
        echo "Renaming $jfile to jason-pics-rename/$i-pano-$(basename $jfile)" 
        ((i+=1)) 
        cp -v $jfile jason-pics-rename/$i-pano-$(basename $jfile)
done

杰森 - 图片 - 重命名目录的内容:

$ find jason-pics-rename/ -type f 
jason-pics-rename/4-pano-car.jpg
jason-pics-rename/1-pano-other.jpg
jason-pics-rename/3-pano-mountain.jpg
jason-pics-rename/2-pano-somefile.jpg

删除对基本名文件1 pano.jpg重命名为正pano.jpg

$ i=0; for jfile in $(find jason-pics/ -type f); do echo "Renaming $jfile to jason-pics-rename/$i-pano-$(basename $jfile)" ;((i+=1)); cp -v $jfile jason-pics-rename/$i-pano.jpg; done

内容是:

$ find jason-pics-rename/ -type f 
jason-pics-rename/3-pano.jpg
jason-pics-rename/2-pano.jpg
jason-pics-rename/1-pano.jpg
jason-pics-rename/4-pano.jpg


文章来源: Rename files using bash script