Chinaunix

标题: 请教如何用shell去掉文件扩展名? [打印本页]

作者: unixer123    时间: 2007-07-02 10:22
标题: 请教如何用shell去掉文件扩展名?
一个目录下有很多文件带着.vox的后缀, 想写个shell将所有的后缀去掉, 如何处理? 目前是想到了将所有后缀为.vox的文件通过ls写到一个文件, 然后逐行处理, 但是就是改名这部分不太清楚
ls -l *.vox > /home/tfiles
while read LINE
do

done < /home/tfiles
作者: waker    时间: 2007-07-02 10:24
rename .vox '' *.vox
作者: unixer123    时间: 2007-07-02 10:44
能具体说说吗, 运行你说的命令 出现下列提示
mv: Target 2.vox must be a directory
Usage: mv [-f] [-i] f1 f2
       mv [-f] [-i] f1 ... fn d1
       mv [-f] [-i] d1 d2
作者: 寂寞烈火    时间: 2007-07-02 11:31
ls *.vox|while read file;do mv $file ${file%.*};done
作者: sunceenjoy    时间: 2007-07-02 11:36
for i in `ls *.vox`; do mv $i ${i%.*}; done;

[ 本帖最后由 sunceenjoy 于 2007-7-2 11:37 编辑 ]
作者: fangdingj    时间: 2007-07-02 13:14
rename 's/\.vox$//' *.vox
作者: latteye    时间: 2007-07-02 15:07
六楼比较方便 man rename 就有一个实例的
作者: huachong    时间: 2007-07-02 15:31
这个,有点眼熟
我刚做过把vox后缀去掉的教本:
1。
for file in `ls *.vox`
do
  filename=`echo $file | sed s/.vox//`
  mv $file $filename
done
2。
for file in `ls *.vox`
do
  filename=`echo $file | awk -F. '{print $1}'`
  mv $file $filename
done
作者: huachong    时间: 2007-07-02 15:33
我觉得 可读性 是很重要的!
作者: saccharine    时间: 2007-07-02 15:54
原帖由 sunceenjoy 于 2007-7-2 11:36 发表
for i in `ls *.vox`; do mv $i ${i%.*}; done;

${i%.*}代表什么意思?本人菜鸟,弄不明白
作者: doctorjxd    时间: 2007-07-02 16:46
原帖由 saccharine 于 2007-7-2 15:54 发表

${i%.*}代表什么意思?本人菜鸟,弄不明白


请看置顶13问之第8问。
作者: peacock66    时间: 2007-07-05 15:12
原帖由 saccharine 于 2007-7-2 15:54 发表

${i%.*}代表什么意思?本人菜鸟,弄不明白



test





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2