当前位置: 技术问答>linux和unix
shell脚本修改文件名
来源: 互联网 发布时间:2017-03-18
本文导语: 我想把某个目录下所有以B开头的文件,改为以as开头 就会个遍历文件,剩下的茫然了 #!/bin/sh for fname in $( ls /home/simage ) do # :( done 怎么判断找到的文件fname是不是以B开头的?做了n多尝试不通,fname好像还...
我想把某个目录下所有以B开头的文件,改为以as开头
就会个遍历文件,剩下的茫然了
#!/bin/sh
for fname in $( ls /home/simage )
do
# :(
done
怎么判断找到的文件fname是不是以B开头的?做了n多尝试不通,fname好像还不能当成数组?
然后再怎么换?
估计这东西不会很麻烦,就是摸不上头绪
新手上路多有不知,烦请各位略作指点~
就会个遍历文件,剩下的茫然了
#!/bin/sh
for fname in $( ls /home/simage )
do
# :(
done
怎么判断找到的文件fname是不是以B开头的?做了n多尝试不通,fname好像还不能当成数组?
然后再怎么换?
估计这东西不会很麻烦,就是摸不上头绪
新手上路多有不知,烦请各位略作指点~
|
如果有 rename 程序,直接如下调用:
如果要练脚本:
rename B as /home/simage/*
如果要练脚本:
#!/bin/sh
for fname in /home/simage/B*
do
mv $fname ${fname/B/as}
done
|
dir=./ ##楼主此处查找路径赋值为“/home/simage/”,会查找此目录下的子目录
set -A FILELIST `find ${dir} -name "B*" -print | awk '{print substr($1,3,length($1)-2)}'` ##楼主此处的substr为 ubstr($1,14,length($1)-13)},子目录有文件需对应修改
for file in ${FILELIST[*]}
do
newfile=`echo ${file} | sed 's/^B/as/'` ##只替换开头第一个B
mv $file $newfile
done
如:
#ls -lrt
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 Basdf
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 badas
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 adfa
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 Bdasfd
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 Basdfas
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 BBdd
#find ./ -name "B*" -print | awk '{print substr($1,3,length($1)-2)}'
Basdf
Basdfas
Bdasfd
BBdd
#for file in in ${FILELIST[*]}
> do
> newfile=`echo ${file} | sed 's/^B/as/'`
> mv $file $newfile
> done
#ls -lrt
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 asasdf
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 badas
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 asdasfd
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 asasdfas
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 asBdd
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 adfa
set -A FILELIST `find ${dir} -name "B*" -print | awk '{print substr($1,3,length($1)-2)}'` ##楼主此处的substr为 ubstr($1,14,length($1)-13)},子目录有文件需对应修改
for file in ${FILELIST[*]}
do
newfile=`echo ${file} | sed 's/^B/as/'` ##只替换开头第一个B
mv $file $newfile
done
如:
#ls -lrt
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 Basdf
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 badas
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 adfa
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 Bdasfd
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 Basdfas
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 BBdd
#find ./ -name "B*" -print | awk '{print substr($1,3,length($1)-2)}'
Basdf
Basdfas
Bdasfd
BBdd
#for file in in ${FILELIST[*]}
> do
> newfile=`echo ${file} | sed 's/^B/as/'`
> mv $file $newfile
> done
#ls -lrt
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 asasdf
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 badas
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 asdasfd
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 asasdfas
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 asBdd
-rw-r--r-- 1 dcss yzyf_dev 0 10ÔÂ19 12ʱ08 adfa