我有一个特定案例的档案集:
80e505bf3611cabea7de90e2ba-movies-c7185328dd51ef480b7d8c71873fbabf-ultra-low_000005_10-23.mov
80e505bf3611cabea7de90e2ba-movies-c7185328dd51ef480b7d8c71873fbabf-ultra-low_000006_9-87.mov
80e505bf3611cabea7de90e2ba-movies-c7185328dd51ef480b7d8c71873fbabf-ultra-low_000007_10-18.mov
80e505bf3611cabea7de90e2ba-movies-c7185328dd51ef480b7d8c71873fbabf-ultra-low_000008_9-02.mov我需要编写一个bash脚本来对当前目录中的所有这些文件进行批重命名,以匹配以下结果:
ultra-low_000005.mov
ultra-low_000006.mov
ultra-low_000007.mov
ultra-low_000008.mov下面的脚本是从所有这些文件中删除常量前缀部分:
#!/bin/bash
echo "Input prefix and press ENTER:"
read prefix
echo "Your prefix will be: $prefix"
echo "Continue? y/n:"
read continue
if [ $continue == "y" ]
then
for f in $prefix*;
do
mv "$f" "${f#$prefix}";
done
fi但是,这个脚本将文件留给最后一个不想要的部分:
ultra-low_000008_9-02.mov因此,我认为它可以通过适当构造的regexp来完成,但我没有成功地使用它。
发布于 2015-08-21 14:43:42
你可以:
for f in "$prefix"*; do
# removes prefix part
temp="${f#$prefix}"
# removes everything after last _ and then adds back extension .mov
mv "$f" "${temp%_*}.${temp##*.}"
donehttps://stackoverflow.com/questions/32143128
复制相似问题