盲目重命名文件--linux

时间:2012-07-21 11:46:05

标签: linux bash rename

我有相当多的文件有很长的文件名,符号,空格等。我想随机和盲目地一次性重命名所有文件,同时从1-9a-Z给它们一个随机文件名。我不想操纵每个文件名,因为它会因符号,空格,长度等而丢失错误。

非常感谢任何形式的帮助。提前谢谢。

4 个答案:

答案 0 :(得分:4)

也许是一个简单的bash脚本,就像Oli建议的那样:

#!/bin/bash
counter=1
for i in *; do
   mv "$i" "$counter";
   ((counter++))
done

HTH

答案 1 :(得分:2)

带有临时文件名的Oneliner(更改您自己的目录):

for f in *; do mv "$f" `mktemp -p /home/user/temp`; done

答案 2 :(得分:1)

  1. 创建临时目录
  2. 对于每个文件mv filename tmp/$i,其中$i是递增数字。
  3. mv tmp/* .

答案 3 :(得分:1)

您可以将inodenumber用作文件名。保证在文件系统中是唯一的。

#!/bin/sh
                                        # inodenumber+name
find . -name \*tmp -type f -ls | awk '{print $1," ",$11}' | (
        while read i p; do
        # UPDATE: extract the basename and suffix
        b=`basename $p`
        s="${b##*\.}"
        echo "b=$b"
        echo "s=$s"

        # remove the echo after testing ...
        echo mv -i $p $i.$s
        done
        )
#eof

注意:如果文件名中有空格或制表符,则无效。