查看完整版本: 批量重命名笔记

ls 2008-5-14 08:59

批量重命名笔记

例:一些文件,名字前面都有english

english1.txt english2.txt english3.txt............
去掉这些english:

find . -type f | xargs rename english ""
当前目录及子目录下的所有前面带english的文件,这个命令把名中的english都给抹除!
如果想把english* 改成 chinese*
就 find . -type f | xargs rename english chinese


如果想抹除 .txt
则:find . -type f | xargs rename .txt "" 也是当前目录及子目录下的
如果想改 .txt  为 .jpg
就 find . -type f | xargs rename .txt .jpg
---------------------------------------------------------------

feilongsky 2008-6-18 11:25

一般情况,上面这个命令运行的很好,但是如果找到的文件名代空格上面的命令运行就可能会出问题了有一个参数 -print0,于默认的-print相比,输出的序列不是以空格分隔,而是以null字符分隔。而xargs也有一个参数-0,可以接受以null而非空格间隔的输入流。所以说xargs简直就是为find而生的。上面的问题就很好解决了:

find ./ -name '*.txt' -print0 | xargs ***********

feilongsky 2008-6-18 11:49

删除文件名中的空格用这个:
ls | sed 's/^.*/mv "&" \`echo & \| sed "s\/ \/\/g"\`/g' | sh >/dev/null 2>&1

feilongsky 2008-6-18 11:54

[quote]原帖由 [i]feilongsky[/i] 于 2008-6-18 11:49 发表 [url=http://www.xinhs.net/redirect.php?goto=findpost&pid=24778&ptid=11797][img]http://www.xinhs.net/images/common/back.gif[/img][/url]
删除文件名中的空格用这个:
ls | sed 's/^.*/mv "&" \`echo & \| sed "s\/ \/\/g"\`/g' | sh >/dev/null 2>&1 [/quote]

找到一个更方便的办法:
rename ' ' '' *

最后一定要有这个*号
页: [1]
查看完整版本: 批量重命名笔记