shell 及相关 / 未分类 · 2014年2月19日

一次清空多个文件

平时清空文件 特别是log 常常用 echo >file 对吧 但是如果有很多个相似的文件呢 是不是 echo >file* 很遗憾的告诉你 这样是不行滴!
要怎么办呢 其实我那天也遇到这样的情况 于是在此记录一下 防止以后自己忘记 所谓好记性不如好笔头嘛 !当然 也希望能帮忙到来访的你
方法1
ls -l|awk 'NR>1{print "echo > " $NF }' |sh
#过程讲解
evan@evan-laptop:~/test/test0$ ls -l
总用量 12
-rw-rw-r– 1 evan evan 6 2月 18 18:06 1
-rw-rw-r– 1 evan evan 2 2月 19 10:19 2
-rw-rw-r– 1 evan evan 2 2月 19 10:27 test
evan@evan-laptop:~/test/test0$ ls -l |awk ‘NR>1{print $NF}’
1
2
test
evan@evan-laptop:~/test/test0$ ls -l |awk ‘NR>0{print $NF}’
12
1
2
test
evan@evan-laptop:~/test/test0$ ls -l|awk ‘NR>1{print “echo > ” $NF }’
echo > 1
echo > 2
echo > test
名词解释
 NR表示从awk开始执行后,按照记录分隔符读取的数据次数,默认的记录分隔符为换行符,因此默认的就是读取的数据行数,NR可以理解为Number of Record的缩写。
  在awk处理多个输入文件的时候,在处理完第一个文件后,NR并不会从1开始,而是继续累加,因此就出现了FNR,每当处理一个新文件的时候,FNR就从1开始计数,FNR可以理解为File Number of Record。
  NF表示目前的记录被分割的字段的数目,NF可以理解为Number of Field。
方法 2
ls |awk '{print "echo >"$0}' |bash
ls | awk '{print ">"$0}'|sh

http://www.letuknowit.com/topics/20120329/sample-about-awk-build-in-variable-nr-fnr-nf.html/
http://bbs.chinaunix.net/thread-912353-1-1.html