#!/bin/bash
#NeoX
folder=/root/folder
cd $folder
num=0
for filename in `ls $folder`; do
let num=$num+1
#old filename:prefix+with . suffix, new filename:continuous digit +with . suffix
mv $filename $num`echo $filename|sed 's/\([a-zA-Z]*_*[0-9]*\)\.\(.\)/\.\2/'`
done
exit
要求: 把所有以点结尾的加上后缀.ts
我的方法:
#!/bin/bash
for files in `ls *.`
do
mv $files `echo "$filests" `
done
2. 同上
mv $files ${files}ts
3. 同上
mv $files `$files.ts|sed 's/\.//' `
4. file =>file.txt
mv $files $files.txt
5. *.04 => *04.txt
mv $files $(echo ${files}.txt|sed 's/\.//1')
或者
mv $files `echo ${files}.txt|sed 's/\.//1' `
B 改后缀(.old => .new)
1. rename
rename .old .new *
2.
mv $files ${file%.old}.new
3.
mv $files `echo $files|tr .old .new`
4.
mv $files `echo $files|sed 's/\.old/\.new/' `
C 去后缀 (*.dat => *)
1. mv $files `echo $files |sed 's/\.dat//' `
2. mv $files `echo $files|tr .dat (4空格)`
D 改前缀 (re* => un*)
1. mv $files un${$files#re}
2. mv $files `echo $files | tr re un`
##########
ls |awk '{printf("mv %s %s_tmp.BIL\n"),$0,$0}'|sh
for i in *.BIL;do
mv "$i" "$(echo $i|awk -F. '{sub(/.*/,"&_tmp.",$1);print}')"
done
#!/bin/sh
#程序名: yzl_batch_rename.sh
#功能 :批量改名;
#版本 :20040914 v1.00
#yzl
if [ $# -ne 2 ]
then
echo "Version: v1.00"
echo "Usage :`basename $0` [begindate] [enddate]"
echo "Example: `basename $0` 20040521 20040620"
echo ""
exit 0
fi
begindate=$1
enddate=$2
date
DATE_S=`date +%Y%m%d`
FILELIST=./filelist.${DATE_S}
test -f ${FILELIST} && rm -f ${FILELIST}
ls *.BIL | grep -v ssp | grep -v filelist | grep -v yzl >${FILELIST}
echo "START rename, please wait..."
echo "begindate:$begindate"
echo "enddate :$enddate"
for filename in `cat ${FILELIST}`
do
thqsrq=`echo ${filename} | cut -c1-8`
if [ $thqsrq -ge $begindate -a $thqsrq -le $enddate ]
then
echo ${filename} >> filelist.${DATE_S}.end
tmp_filename=`echo ${filename} | cut -c1-10`
cp ./${filename} ./after/${tmp_filename}_ssp.BIL
fi
done
echo "BATCH RENAME DONE!"
for i in *.bil;do mv "$i" "$(echo $i|sed 's/[0-9][0-9]*/&_tmp/')"; done
rename .bil _tmp.bil *.bil
for i in *.BIL ;do mv $i ${i/.BIL/_tmp.BIL};done
其中${i/.BIL/_tmp.BIL}是将变量i中的字符串.BIL替换为_tmp.BIL
#######从配置文件中读取配置选项值#######
########BBY##########################
src_dir=/home02/bill07 #要修改的文件所在的目录,要根据实际修改此处
dest_dir= #如果有必要可以加上目的目录
cd $src_dir
echo "begin at `date \"+%Y/%m/%d %H:%M:%S\"`." > $src_dir/mvbill.log
ls *_3.dat|awk -F'_3.' '{print "mv "$0" "$1"_7.dat"}' >$src_dir/mv.sh
chmod +x mv.sh
cat mv.sh>>$src_dir/mvbill.log
mv.sh>>$src_dir/mvbill.log
#cp -p $crc_dir/*_7.dat $dest_dir/
echo "end at `date \"+%Y/%m/%d %H:%M:%S\"`." >> $src_dir/mvbill.log
SCO5.0.6
#/bin/sh
ls | sed 's/^.........../mv &.BIL &_tmp/' | sh
ls | cut -f1 -d'.' | awk '{ print "mv "$1".BIL "$1"_tmp.BIL" }' | sh
ls *.BIL | tr -d ".BIL" | xargs -I + mv +.BIL +_tmp.BIL
Shell 批量重命名以“.log”结尾的文件
pre="M";
for filename in `find . -name "*"`
do
if [ -f $filename ]
then
if [ ${filename%.log} != $filename ]
then
mv $filename ./$pre${filename#./};
fi
fi
done
find -type f| xargs -i -n1 mv {} {}a
find . -type f -exec mv {} "{}ts" \;
#!/bin/ksh ls *.aaa | while read NAME do echo $NAME ${NAME%\.aaa}.bbb done 先测一下上面的命令,没问题的话把 echo 换成 mv 就行了。 |
#!/bin/sh
ls | while read NAME
do
echo $NAME | grep ksh
mv $NAME $NAME.$1 #$1是后缀名
done