LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1275|回复: 7

我想给某个子目录下的文件随机从命名

[复制链接]
发表于 2009-6-17 09:33:51 | 显示全部楼层 |阅读模式
某个子目录下有很多文件,都是JPG的,我想用随机数字从命名这些文件,怎么做?谢谢
发表于 2009-6-19 10:25:38 | 显示全部楼层
3 for f in *.jpg
  4 do  
  5     mv $f "`mcookie`.jpg"
  6 done
回复 支持 反对

使用道具 举报

发表于 2009-6-19 16:04:44 | 显示全部楼层
隨機數字的變數:         $RANDOM
回复 支持 反对

使用道具 举报

发表于 2009-6-21 22:05:03 | 显示全部楼层
ls *|while read i;do mv $i $RANDOM;done
回复 支持 反对

使用道具 举报

发表于 2009-6-21 23:01:12 | 显示全部楼层
Post by chenfengyuan;2000156
ls *|while read i;do mv $i $RANDOM;done


这种可能性有没有:生成了两个一样的随机数?
回复 支持 反对

使用道具 举报

发表于 2009-6-22 16:49:34 | 显示全部楼层
Post by pingz;2000176
这种可能性有没有:生成了两个一样的随机数?


有, 如果要保险你可以man 一下 mktemp这条命令
回复 支持 反对

使用道具 举报

发表于 2009-6-22 18:28:41 | 显示全部楼层
Post by pingz;2000176
这种可能性有没有:生成了两个一样的随机数?

肯定会出现重复,随机数范围0-32765,当然,我们可以$RANDOM$RANDOM来加大数目,再用test来判断是否重复。不过好像管道两边的程序是同时开始的,这样ls | 改名,可能会造成改好名字后再被ls”发现“。假设此目录下没有子目录。这样比如你的目录名是“一堆文件”,cd到要更名文件的目录上层。
ls 一堆文件 > ls-result
cd  一堆文件
cat ../ls-result| while read myFileName
do while myNewName=$RANDOM$RANDOM
do if [  ! -e $myNewName ]
then mv $myFileName $myNewName;break
else continue
fi
done
done
应该没什么问题了。最后,改名字是很危险的事情,这里只是提供参考。不负任何责任!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-23 09:18:36 | 显示全部楼层
谢谢各位高手的指点,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表