zoukankan      html  css  js  c++  java
  • 一道shell笔试题 把指定目录中的文件按大小进行分拣

    http://blog.chinaunix.net/uid-23302288-id-3781684.html   原文连接

    完成一个Shell,把指定目录中的文件按大小进行分拣,默认以100K为界线,分拣到指定的另外两个目录中。
    程序运行需输入参数:<源目录><大文件目录><小文件目录>
    程序还需提供可选参数两个,-s指定分拣界线,如200设置界线为200k;-z 对分拣出来的文件进行压缩。


    #!/bin/bash
    functionUsage()
    {
         echo "Usage: $0 <s_dir l_dir="" s_dir="" [-s]="" [-z]="">"
         exit 1
    }

    if [ ! -d $1 ];then functionUsage;
    elif [ ! -d $2 ];then functionUsage;
    elif [ ! -d $3 ];then functionUsage;
    fi

    oneMove()
    {
         for x in `ls -l $1|awk 'NR!=1 && !/^d/{if (int($5/1024) > 100) print $NF}'`;do mv $x $2;done
         for y in `ls -l $1|awk 'NR!=1 && !/^d/{print $NF}'`;do mv $y $3;done
    }

    twoMove()
    {
         read -p "please input size: "  _num
         for x in `ls -l $1|awk -v _size="$_num" 'NR!=1 && !/^d/{if (int($5/1024) > _size) print $NF}'`;do mv $x $2;done
         for y in `ls -l $1|awk 'NR!=1 && !/^d/{print $NF}'`;do mv $y $3;done
    }

    fileTar()
    {
         cd $2 && tar zcvf large.tar.gz ./*
         cd $3 && tar zcvf small.tar.gz ./*
    }

    case "$#" in
       3)     oneMove;;
       4)     if [ "$4" = "-s" ];then twoMove; else oneMove; fileTar; fi;;  
       5)     twoMove; fileTar;;
       *)     functionUsage;;
    esac

  • 相关阅读:
    python--binascii--二进制和ASCII编码的二进制的转换
    python--you-get视频下载
    python--AES加密
    nodejs的简单爬虫
    golang学习之接口型函数
    golang学习之defer
    golang学习之slice基本操作
    微信小程序初体验
    vuex构建笔记本应用学习
    2016年终总结
  • 原文地址:https://www.cnblogs.com/wenxingxu/p/9455874.html
Copyright © 2011-2022 走看看