我有相当多的文件,长文件名,符号,空格等我想随机,盲目地重命名所有他们一次,同时给他们从1-9a-Z
随机文件名。 我不想操作每个文件的名称,因为它有时会由于符号,空格,长度等原因而抛出错误。
任何forms的帮助都非常感谢。 先谢谢你。
您可以使用inodeumber作为文件名。 在文件系统中保证是唯一的。
#!/bin/sh # inodenumber+name find . -name \*tmp -type f -ls | awk '{print $1," ",$11}' | ( while read ip; 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
注意:如果文件名中有空格或制表符,这将不起作用。
也许一个简单的bash脚本,像Oli建议的那样:
#!/bin/bash counter=1 for i in *; do mv "$i" "$counter"; ((counter++)) done
HTH
具有临时文件名的Oneliner(更改自己的目录):
for f in *; do mv "$f" `mktemp -p /home/user/temp`; done
mv filename tmp/$i
,其中$i
是一个递增的数字。 mv tmp/* .
。