0

我需要重命名文件夹中的所有文件并给它一个新的文件扩展名。我知道如何使用 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等。

4

2 回答 2

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 可以安全地处理具有不寻常名称(换行符、特殊字符等)的文件。

于 2013-01-21T17:53:59.083 回答
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
于 2013-01-21T20:28:32.347 回答