Daily Archives: 九月 11th, 2007

将目录下所有.zip和.tar.gz文件解压到同名目录后并删除原文件脚本

#!/bin/bash
for i in $( find . -path “./srczip” -prune -o -name “*.zip” ); do
j=`basename $i`
if [ $j != "srczip" ]
then
echo $i
#echo $j
filename=`echo $i | sed s/.zip//`
echo $filename
mkdir $filename
unzip -d $filename $i
rm $i
fi
done
===============
#!/bin/bash
find . -path “./srczip” -prune -o [...]

find的-o和-prune参数

-o 就是 OR
find . -path “./test” -prune -o -cmin -5 -print
查找修改时间在5分钟内的文件并打印,但是排除./test目录
-prune, -print 是 action
-prune 是排除该条件
现在再看一遍
满足 -path “./test” 我们就 -prune 排除
或者 满足 -cmin -5 我们就 -print
expr1 -o expr2 里面,假如满足了第一个。我们就忽略第二个。在上面的例子中就是 满足 -path “./test” 我们就不会去看 是不是 -cmin -5。
差不多就这么理解吧。

从文件中反复读取一行,给变量赋值,直到文件结束

http://www.lslnet.com/linux/dosc1/48/linux-329179.htm
从文件中反复读取一行,给变量赋值,直到文件结束
一个文件A,每行一个字符串。
我要用每行的字符串赋值给变量id
一直到文件A结束,应该怎样实现呢?
#!/bin/sh(bash也通用)
while read id
do
echo $id
…………..
done
===================
下面这种方法遇到行当中有空格的会把空格后面的丢弃
awk ‘{printf”id=%s\n”,$1}’ A
–>
假设文件为A
$cat A
hello
yes
ok
$awk ‘{printf”id=%s\n”,$1}’ A
id=hello
id=yes
id=ok
%s表示 后面的字符串变量,这里指的是 $1,也就是文件 A的 第一列。