最近需要干这么件事,把当前文件夹下文件名含有eee的都改成大写的EEE,比如21-eee.doc就要改成21-EEE.doc。
写了个shell脚本,会sed就不难了:
for filename in *eee*; do newname=`echo $filename|sed -n ’s/eee/EEE/p’`; mv $filename $newname;done
如果写成结构化会更清晰:
for filename in *eee*
do
newname=`echo $filename|sed -n ’s/eee/EEE/p’`
mv $filename $newname
done
然后还有一个任务,将每个文件的执行权限去掉,这样写:
for filename in *; do chmod ugo-x $filename;done
结论:
shell是个好东西,sed还是很有用的,不能小看正则表达式。
over~
通过RSS订阅
November 14th, 2008 at 11:34 pm
hmm, 为什么不直接用 chmod a-x * 呢?
回复
November 16th, 2008 at 10:55 am
呵呵,写文章时候的思维惯性~~
肯定是你的方法最简洁。
回复
November 16th, 2008 at 6:48 pm
其实是随机过来的…
又见重命名:rename eee EEE *eee*
回复
Yuebing Reply:
November 20th, 2009 at 5:12 pm
a.txt.txt b.txt 就会变成 a.xxx.txt b.xxx 有问题。
回复
November 18th, 2008 at 9:08 am
To sanding:
赞!
小同学有前途阿~
有空我好好研究研究rename:)
回复
November 19th, 2008 at 7:45 pm
#ls
aaaaadeee a-eee asdfeeeise b-eee
# rename s/eee/EEE/ *eee*
#ls
aaaaadEEE a-EEE asdfEEEise b-EEE
回复
November 20th, 2008 at 2:11 pm
To mlsx:
谢谢来我博客!
看来我文章中的解决办法是最复杂的了…
回复
March 12th, 2010 at 12:27 pm
不同系统上的自带的 rename 用法可能不一样, 移植性不太好
回复