点击排行
|
评论排行
|
9
Jul
Linux 下批量更改文件名
分类:电脑技术 » linux shell 出处:本站原创
比如将所有文件名中带有20080707的字符更改成20080709?
root@ubuntu:~/test# cat re
#!/bin/bash
# code by thatday
#
ls -l $1 | grep ^[^d] | awk '{print $9}'| while read line; do
do=`echo $line | grep $2`
if [ ! "$do" = "" ]; then
newname=`echo $line | sed 's/'$2'/'$3'/g'`
echo "rename $line to $newname ..."
mv $1/$line $1/$newname
fi
done
root@ubuntu:~# chmod +x re
root@ubuntu:~# ls -l test/
total 4
-rw-r--r-- 1 root root 0 Jul 9 13:45 20070808jjj
-rw-r--r-- 1 root root 0 Jul 9 13:45 20070809abc
-rw-r--r-- 1 root root 0 Jul 9 13:45 aaa20070809bb
drwxr-xr-x 2 root root 4096 Jul 9 12:05 bak
-rw-r--r-- 1 root root 0 Jul 9 13:45 ccccc200708091
-rw-r--r-- 1 root root 0 Jul 9 13:45 dddd20070809aj
root@ubuntu:~# ./re test/ 20070809 20070810
rename 20070809abc to 20070810abc ...
rename aaa20070809bb to aaa20070810bb ...
rename ccccc200708091 to ccccc200708101 ...
rename dddd20070809aj to dddd20070810aj ...
root@ubuntu:~# ls test/
20070808jjj 20070810abc aaa20070810bb bak ccccc200708101 dddd20070810aj
#!/bin/bash
# code by thatday
#
ls -l $1 | grep ^[^d] | awk '{print $9}'| while read line; do
do=`echo $line | grep $2`
if [ ! "$do" = "" ]; then
newname=`echo $line | sed 's/'$2'/'$3'/g'`
echo "rename $line to $newname ..."
mv $1/$line $1/$newname
fi
done
root@ubuntu:~# chmod +x re
root@ubuntu:~# ls -l test/
total 4
-rw-r--r-- 1 root root 0 Jul 9 13:45 20070808jjj
-rw-r--r-- 1 root root 0 Jul 9 13:45 20070809abc
-rw-r--r-- 1 root root 0 Jul 9 13:45 aaa20070809bb
drwxr-xr-x 2 root root 4096 Jul 9 12:05 bak
-rw-r--r-- 1 root root 0 Jul 9 13:45 ccccc200708091
-rw-r--r-- 1 root root 0 Jul 9 13:45 dddd20070809aj
root@ubuntu:~# ./re test/ 20070809 20070810
rename 20070809abc to 20070810abc ...
rename aaa20070809bb to aaa20070810bb ...
rename ccccc200708091 to ccccc200708101 ...
rename dddd20070809aj to dddd20070810aj ...
root@ubuntu:~# ls test/
20070808jjj 20070810abc aaa20070810bb bak ccccc200708101 dddd20070810aj
9
Jul
这里不得不把鸟哥的一幅图贴在这里,对于那些想知其所以然的朋友来说,你可以大致浏览以下本文,再 来看这幅图和我配的文字,希望可以帮助你理解iptables.相信很多朋友和我一样,是要建一个ip分享器(局域网用来共享上网)才来学习iptables的,所以我的思路是首先能够使内网机器访问外部网络,然后再考虑复杂的安全设置,这样大家做起来少一些挫败感,而且更加有动力.
硬件准备:局域网中的一台电脑,配备两个网卡,具备使用外网的条件,可以是ADSL, 或者乙太网,ip可以是dhcp或者固定ip.以我们实验室为例,外网固定ip。
首先设置服务器(ip分享器)的地址和路由,不会做上述设置的朋友可以去网上查一下.比如鸟哥的私房菜。其实只要设置/etc/network/interfaces文件就行了,然后使用 /etc/init.d/networking restart 重启网络。也不要忘记在/etc/resolv.conf中添加或修改nameserver字段。接下来就是iptables的设置,首先就是使主机有ip伪装的功能,其次就是防火墙的功能。
我们看图,和网内机器上网有关的链是filter表的forward链,以及nat表的POSTROUTING链.所以iptables可以设置如下
硬件准备:局域网中的一台电脑,配备两个网卡,具备使用外网的条件,可以是ADSL, 或者乙太网,ip可以是dhcp或者固定ip.以我们实验室为例,外网固定ip。
首先设置服务器(ip分享器)的地址和路由,不会做上述设置的朋友可以去网上查一下.比如鸟哥的私房菜。其实只要设置/etc/network/interfaces文件就行了,然后使用 /etc/init.d/networking restart 重启网络。也不要忘记在/etc/resolv.conf中添加或修改nameserver字段。接下来就是iptables的设置,首先就是使主机有ip伪装的功能,其次就是防火墙的功能。
我们看图,和网内机器上网有关的链是filter表的forward链,以及nat表的POSTROUTING链.所以iptables可以设置如下
9
Jul
iptables 指令
语法:
iptables [-t table] command [match] [-j target/jump]
-t 参数用来指定规则表,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是 filter。
个规则表的功能如下:
nat 此规则表拥有 Prerouting 和 postrouting 两个规则链,主要功能为进行一对一、一对多、多对多等网址转译工作(SNAT
DNAT),由于转译工作的特性,需进行目的地网址转译的封包,就不需要进行来源网址转译,反之亦然,因此为了提升改写封包的
率,在防火墙运作时,每个封包只会经过这个规则表一次。如果我们把封包过滤的规则定义在这个数据表里,将会造成无法对同一
包进行多次比对,因此这个规则表除了作网址转译外,请不要做其它用途。
语法:
iptables [-t table] command [match] [-j target/jump]
-t 参数用来指定规则表,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是 filter。
个规则表的功能如下:
nat 此规则表拥有 Prerouting 和 postrouting 两个规则链,主要功能为进行一对一、一对多、多对多等网址转译工作(SNAT
DNAT),由于转译工作的特性,需进行目的地网址转译的封包,就不需要进行来源网址转译,反之亦然,因此为了提升改写封包的
率,在防火墙运作时,每个封包只会经过这个规则表一次。如果我们把封包过滤的规则定义在这个数据表里,将会造成无法对同一
包进行多次比对,因此这个规则表除了作网址转译外,请不要做其它用途。
9
Jul
总览
用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX 指定链
用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX 指定链
5
Jul
现在银行办理住房贷款主要有两种还款方式,一种是等额本息还款,一种是等额本金还款方式。对于此两种还款方式的区别,银行的讲解也颇为专业、不易理解,在此我将做一个简单的介绍。等额本息还款方式下,每月支付的贷款本息之和是相等的,即从还款第一期开始,每月支付相同的金额直到偿还所有的本息。选择这种还款方式,在还款的初期,支付的本息中,利息所占的比重较大,而后逐期下降。等额本金还款方式每期偿还的本金是一样的,只是利息会随本金的偿还而逐渐减少。同等情况下(相同的金额、期限、利率),选择等额本金还款方式所支付的利息总额要低于等额本息还款方式下,以金额为120000、期限为10年、利率为6.6555%的贷款为例,等额本息还款方式下,利息总额为44654.38,每月还款1372.12元,等额本金还款方式下为40268.8,最高每月还1665.6元,最后一个月则只需还1005.55元。所以建议朋友在选择还款方式时,有能力的情况下尽量选择等额本金还款方式。
等额本金还款的计算也十分简单,只需将贷款金额除以还款的总期数(年数×12)即得每月还款的本金数,剩余本金数乘以月利率即得出当月应支付的利息数。目前5年期以上的房贷年利率为6.6555%,折合为月利率6.6555%/12=0.554625%,仍以120000元,10年期为例,支付期数一共为12×10年=120期,每期支付的本金为120000/120=1000元,第一个月支付的利息为120000×0.554625%=665.55元,由于每月偿还1000元本金,所以计息的本金数额逐期减少1000元,即每月支付的利息将逐期递减1000×0.554625%=5.55元,到最后一期时,仅需支付5.55元利息,与本金1000合计共1005.55元。从以上的计算可以看出,等额本金还款方式下,还款初期的负担会相对重一点,但越往后会越轻松。
不存在等本金还款合算的问题
等本金和等额还款是不同的还款方式,但不存在等本金还款合算的问题.所谓还款的总利息低是不错,但并不表明你占了什么便宜。根据资本的时间价值理论和计算,只要你早一天多还款一元钱,你剩余支付的利息就少一点.两种算法都是按照:
所需支付利息=剩余所欠本金X利率 来计算的。
所以,选择什么方式是按你的近期支付能力来选择的,不存在等本金还款合算的问题。很简单的道理就是:你比原订的首付比例首次多支付1元,你1年需要支付的利息就少了6分钱(假设利率6%).
所以你千万不要听所谓的理财专家的说法:你选择等本金还款合算....只能说等本金还款可以少付利息.
如果等本金还款合算的话,银行就要喝西北风了。 设计等额还款的初衷是便于记忆(财务管理课程里称为年金-相同的时间间隔还相同的款项),等本金还款每个月还款金额都不同,很麻烦。有兴趣的TZ找一本财务管理的书看看有关年金的内容会清楚很多。
等额本金还款的计算也十分简单,只需将贷款金额除以还款的总期数(年数×12)即得每月还款的本金数,剩余本金数乘以月利率即得出当月应支付的利息数。目前5年期以上的房贷年利率为6.6555%,折合为月利率6.6555%/12=0.554625%,仍以120000元,10年期为例,支付期数一共为12×10年=120期,每期支付的本金为120000/120=1000元,第一个月支付的利息为120000×0.554625%=665.55元,由于每月偿还1000元本金,所以计息的本金数额逐期减少1000元,即每月支付的利息将逐期递减1000×0.554625%=5.55元,到最后一期时,仅需支付5.55元利息,与本金1000合计共1005.55元。从以上的计算可以看出,等额本金还款方式下,还款初期的负担会相对重一点,但越往后会越轻松。
不存在等本金还款合算的问题
等本金和等额还款是不同的还款方式,但不存在等本金还款合算的问题.所谓还款的总利息低是不错,但并不表明你占了什么便宜。根据资本的时间价值理论和计算,只要你早一天多还款一元钱,你剩余支付的利息就少一点.两种算法都是按照:
所需支付利息=剩余所欠本金X利率 来计算的。
所以,选择什么方式是按你的近期支付能力来选择的,不存在等本金还款合算的问题。很简单的道理就是:你比原订的首付比例首次多支付1元,你1年需要支付的利息就少了6分钱(假设利率6%).
所以你千万不要听所谓的理财专家的说法:你选择等本金还款合算....只能说等本金还款可以少付利息.
如果等本金还款合算的话,银行就要喝西北风了。 设计等额还款的初衷是便于记忆(财务管理课程里称为年金-相同的时间间隔还相同的款项),等本金还款每个月还款金额都不同,很麻烦。有兴趣的TZ找一本财务管理的书看看有关年金的内容会清楚很多。





