请详细解释一下这个,谢谢HELP

sh/bash/dash/ksh/zsh等Shell脚本
回复
xwyxn
帖子: 359
注册时间: 2008-03-30 12:19

请详细解释一下这个,谢谢HELP

#1

帖子 xwyxn » 2009-10-25 13:17

我刚学shell,能详细解释一下吗?
ls -1|while read i; do j=`dirname $i`;mv "$i" ${j##*/}"$i";done

$i是代指ls -l 的某行吗?从第一行开始?
${j##*/}又指什么呢?
假如,我有文件01.xy, 02.xy, 03.xy……
用这个给改名改成psp01,psp02,psp03,……怎么改啊?
i要指定范围吗?如果指定范围,怎么指定啊?比如15个文件?
t3swing
帖子: 1028
注册时间: 2008-11-01 21:42
来自: 树下板凳

Re: 请详细解释一下这个,谢谢HELP

#2

帖子 t3swing » 2009-10-25 15:25

ls -1(数字1)不是ls -l 看清楚了,ls -1只是吧ls的结果按行列出来,不同于ls -l

##的用法,真是没见过,c中有这玩意,shell中也有这玩意?特殊符号goole都不知道咋用
mv "$i" "${j}/XX$i" 不就可以了 ,为啥要用mv "$i" ${j##*/}"$i"?
还望xzap小朋友帮忙解答啊 ! 不用rename(习惯问题?) 用这个全路径mv,有啥好处?小朋友帮帮忙,说来听听!

lz的可以rename "s/([0-9]*)\.xy/psp$1/" *.xy

用while read i 的话 ,他只是把 读到的值传入 变量i中 ,i一般说来可以理解成字符串类型,shell本身是弱类型,不需要指定范围(我也不知道怎么指定)
mv的话可以用basename提取01.xy中.前面部分 ,自己搞吧
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: 请详细解释一下这个,谢谢HELP

#3

帖子 O_O_BOT » 2009-10-25 17:44

最好用find -exec..
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
回复