一味的重命名文件 – linux

我有相当多的文件,长文件名,符号,空格等我想随机,盲目地重命名所有他们一次,同时给他们从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 
  1. 创建一个临时目录
  2. 对于每个文件, mv filename tmp/$i ,其中$i是一个递增的数字。
  3. mv tmp/* .