我有一个包含大量照片的文件夹中执行bash脚本集,并依次缝合他们到基于用户输入的全景。 一旦生成完成,输出文件重命名为$x-pano.jpg
和移动一个文件夹更高。
我的问题是号码前缀是基于脚本的顺序执行,这意味着所有的文件获得改名1-pano.jpg
到n-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))]}
将得到的文件列表,排序按升序排列,并从列表中的最后一个文件。 这是我卡住。 使用-
作为分隔符,我怎么能捕捉当前值?
你可能寻找${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}
。
假设这仅仅是一个重命名任务:
$ 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