2011-05-03 81 views
1

我有一个大而凌乱的文件集合 - 嘿谁不 - 其中一些是大JPG(大在这种情况下是一个任意数字,说2.5MB),我要重命名 - 我想从*.jpg扩展更改为*.jpeg.查找并重命名大* .jpg到* .jpeg

我很想用一个shell脚本来做到这一点,我运行BASH 3.2.39(1),我有一种感觉,这是“简单”的任务与find,唉,我觉得发现的语法很难记住,手册页无法阅读。

任何和所有的帮助最受赞赏。

+0

文件的大小* *在这里并不重要。 – pavium 2011-05-03 07:14:54

+0

你是说你只想重命名大于2.5MB的文件吗? – 2011-05-03 07:16:42

+0

我认为哈马斯特罗姆是有的;是的,我正在寻找重命名大于2.5MB或其他一些门槛的文件。 – Dan 2011-05-03 08:09:20

回答

1

你在使用什么操作系统?在大多数库有一个名为MMV的应用程序,它非常适合这类东西..

用法:
mmv \*.jpg \#1.jpeg

+0

我正在运行Debian 5.0.8 – Dan 2011-05-03 08:07:55

+0

不过,无法根据文件大小进行区分。 – Dan 2011-05-03 08:11:26

1

安装重命名(标准工具,在你的Linux系统或自制适用于Mac),则:

rename -s .jpg .jpeg * 

,或者如果你有子目录中的文件太:

rename -s .jpg .jpeg $(find . -name '*.jpg') 
+0

但是,这不会因文件大小而有所区别。 – Dan 2011-05-03 08:12:19

0
for i in *.jpg 
do 
new_name= $(echo $i|sed 's/.jpg/.jpeg/') 
mv $i $new.name 
done 
+0

再次...这是如何根据文件的大小区分? – Dan 2011-05-03 08:23:16

7

查找和重命名大文件可以这样进行:

find . -size +2500k -exec rename -s .jpg .jpeg '{}' ';'

+0

我得到'未知选项:s' '-s'选项打算做什么? – Dan 2011-05-03 08:21:36

+1

@Dan:取决于你的计算机上有哪个'rename'。基于Debian的发行版使用perl'prename'。改用'rename.ul'。请参阅http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=439935 – 2011-05-03 13:08:51

+1

谢谢@ christoffer-hammarstrom;我使用'rename.ul'而没有'-s'标志,它工作;而用'-s'标志它没有。 – Dan 2011-05-03 17:36:55