2

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

非常感谢任何形式的帮助。先感谢您。

4

4 回答 4

4

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

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

高温高压

于 2012-07-21T12:09:13.523 回答
2

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

for f in *; do mv "$f" `mktemp -p /home/user/temp`; done
于 2012-07-21T12:16:56.030 回答
1
  1. 创建临时目录
  2. 对于每个文件,mv filename tmp/$i,其中$i是一个递增的数字。
  3. mv tmp/* ..
于 2012-07-21T11:48:54.913 回答
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

注意:如果文件名中有空格或制表符,这将不起作用。

于 2012-07-21T12:12:08.537 回答