linux 下常用命令和脚本(持续添加)

判断是否为文件或者目录

if [ -d dir ]  //注意[之后加空格

if [ -f file ] 

  1. for file in `ls $1`
  2.     do
  3.     if [ -d $1"/"$file ]
  4.     then 
  5.         echo "is dir"
  6.     else
  7.         echo "is file"
  8.     fi
  9. done

常用的排序命令

cat $1 |sort -n|uniq -c > $2   (对指定文件按照数字排序,并求和)

遍历目录中所有文件,并保存数组中,数组要用{}包含起来,否则取得的是第一项。

${array[*]}: 全部元素

${array[@]}:数组长度

${array[$i]}:数组第i个元素

如果写成了$array[$i],则取得首项的第i个元素

  1. #!/bin/sh
  2. dir=$1
  3. filelist=`ls $dir`  //赋值语句之间不能有空格
  4. array=($filelist) 
  5. if [ -d  tmp_result ]
  6.     then
  7.     rm -rf tmp_result
  8. fi
  9. mkdir tmp_result
  10. for ((i=0;i<${#array[@]};i++));do
  11.     sh sort.sh $dir${array[$i]}  ./tmp_result/${array[$i]} 
  12.     echo $i
  13. done

http://blog.sina.com.cn/s/blog_4152a9f501013r6c.html(参考,写的比较全面)

拷贝文件到指定目录copyFiles.sh

  1. #!/bin/sh
  2. input=$1
  3. output=$2
  4. for file in `ls $input`
  5. do
  6. echo $file
  7. if [ ! -d $file ]; then
  8. mv $file $output
  9. fi
  10. done

常用的shell命令:

统计文件夹中所有文件的总行数,find ./ -type f | wc -l 

或者 

find ./ -type f |xargs  wc -l | awk 'BEGIN{sum = 0} { if ( $2 != "total" ) {sum += $1;} } END{print sum}'

2. 统计单词出现的次数

cat part-m-00000 | awk -F [' '+] '{if (length($0)<24){for(i=1;i<=NF;i++) {print $i;}}}' | sort | uniq -c | sort -k1nr | head -n 100

3. 统计query出现的次数

cat *brand-queries/* | awk -F'\t' '{a[""$1]++;} END{for(k in a) print k"\t"a[k];}' > brand_match_count.txt

posted @ 2014-07-11 10:24  purejade  阅读(191)  评论(0)    收藏  举报