我需要重命名文件夹中的所有文件并为其指定新的文件扩展名。我知道如何用bash重命名文件。我遇到的问题是,我需要将其重命名为:
file.01
file.02
file.03
并计算所有找到的文件。
有人能为我提供一个从哪里开始的例子吗?
这就是我需要的:
md5sum * | sed 's/^\(\w*\)\s*\(.*\)/\2 \1/' | while read LINE; do
mv $LINE
done
但是这并没有给它一个来自file.01
file.02
file.03
等的扩展名。
答案 0 :(得分:2)
如果按字面意思读出你的要求......
counter=0
for file in *; do
read sum _ <<<"$(md5sum "$file")"
printf -v file_new "%s.%02d" "$sum" "$counter"
mv -- "$file" "$file_new"
(( counter++ ))
done
这比从md5sum的输出中读取文件名效率低,但更可靠,因为globbing安全地处理具有不寻常名称(换行符,特殊字符等)的文件。
答案 1 :(得分:0)
这一点:
i=0
for f in *
do
if [ -f $f ]; then
i=`expr $i + 1`
if [ $i -lt 10 ]; then
i=0$i
fi
sum=`md5sum $f | cut -d ' ' -f 1`
mv $f $sum.$i
fi
done