我有这种格式的文件:ddmmyyyyRANDOM.mp3
我希望将它们重命名为:yyyy-mm-dd-RANDOM.mp3
RANDOM
是一个随机字符串,可以包含空格。
不是作业问题。我被击中了,我尝试了各种正则表达式,但是我发现了。我需要编写bash脚本
答案 0 :(得分:2)
我会通过substring
的方法分解 filename="ddmmyyyyRANDOM.mp3"
part1=${filename:0:8} #this should get you ddmmyyy
part2=${filename:9:6} #this should get you RANDOM
filenamenew=$part1$part2".mp3"
mv $fileneme $filenamenew
如果您有超过1个文件名,则循环运行
答案 1 :(得分:0)
试试这个:
FILE="23022014hello world.mp3"
mv "$FILE" "$(echo "$FILE" | sed 's/\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{4\}\)\(.*\)/\3-\2-\1-\4/')"
分别剪切前2个数字,后2个数字,接下来的4个数字和剩余字符,并根据您的要求进行排列。
答案 2 :(得分:0)
试试这个:
for file in *; do
new=$(echo "$file" | sed -r 's/^([0-9]{2})([0-9]{2})([0-9]{4})(.*)$/\3-\2-\1-\4/')
mv "$file" "$new"
done
有关正则表达式的更多信息HERE
答案 3 :(得分:0)
使用rename
实用程序
touch 12021960RANDOM.mp3 "01041973 random with spaces.mp3"
$ rename -n 's/^(\d{2})(\d{2})(\d{4})/$3-$2-$1-/' *.mp3
01041973 random with spaces.mp3 renamed as 1973-04-01- random with spaces.mp3
12021960RANDOM.mp3 renamed as 1960-02-12-RANDOM.mp3
如果您对输出感到满意,请移除-n
部分以实际执行重命名