#!/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 *.`
domv $files `echo "$filests" `
done
2. 同上
mv $files $ts
3. 同上
mv $files `$files.ts|sed 's/\.//' `
4. file =>file.txt
mv $files $files.txt
5. *.04 => *04.txt
mv $files $(echo $.txt|sed 's/\.//1')
或者mv $files `echo $.txt|sed 's/\.//1' `
b 改字尾(.old => .new)
1. rename
rename .old .new *
2.mv $files $.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$
2. mv $files `echo $files | tr re un`
##########
ls |awk ''|sh
for i in *.bil;do
mv "$i" "$(echo $i|awk -f. '')"
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
fibegindate=$1
enddate=$2
date
date_s=`date +%y%m%d`
filelist=./filelist.$
test -f $ && rm -f $
ls *.bil | grep -v ssp | grep -v filelist | grep -v yzl >$
echo "start rename, please wait..."
echo "begindate:$begindate"
echo "enddate :$enddate"
for filename in `cat $`
dothqsrq=`echo $ | cut -c1-8`
if [ $thqsrq -ge $begindate -a $thqsrq -le $enddate ]
then
echo $ >> filelist.$.end
tmp_filename=`echo $ | cut -c1-10`
cp ./$ ./after/$_ssp.bil
fidone
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 $;done
其中$是將變數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.' '' >$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 '' | sh
ls *.bil | tr -d ".bil" | xargs -i + mv +.bil +_tmp.bil
shell 批量重新命名以「.log」結尾的檔案
pre="m";
for filename in `find . -name "*"`
doif [ -f $filename ]
then
if [ $ != $filename ]
then
mv $filename ./$pre$;
fifi
done
find -type f| xargs -i -n1 mv {} {}a
find . -type f -exec mv {} "{}ts" \;
#!/bin/ksh
ls *.aaa | while read name
doecho $name $.bbb
done
先測一下上面的命令,沒問題的話把 echo 換成 mv 就行了。
#!/bin/sh
ls | while read name
do echo $name | grep ksh
mv $name $name.$1 #$1是字尾名
done
shell 批量修改檔名
當前目錄有n多個 檔案,需要按從小到大排序,然後改名成 1.n.解法如下 整理來自於論壇 方法一 root squid mkdir ls lrs total 24 rw r r 1 root root 7 jun 1 01 19 test1.txt rw r r 1 root root 8 jun ...
shell 批量修改檔名
擷取檔名的前兩個字元 fname 擷取檔案的後四個字元 bname name echo name 1 bc 拼接成檔名 filename fname name bname 更改檔名 擷取檔名的前兩個字元 fname 擷取檔案的後四個字元 bname name echo name 1 bc 拼接成檔名...
shell指令碼 批量修改檔名
參考鏈結1 shell指令碼 批量修改檔名 刪除檔名中字元 參考鏈結2 linux shell 字串操作詳解 長度,讀取,替換,擷取,連線,對比,刪除,位置 參考鏈結3 每天乙個linux命令 21 find命令之xargs 參考鏈結5 shell 學習第十天 sed 查詢與替換 批量改名,增加字元...