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

  • 相关阅读:
    爬虫工具包
    用于模型选择的AIC与BIC
    4.数据结构---堆
    海量数据查询
    机器学习---算法汇总目录
    RNN/LSTM/GRU/seq2seq公式推导
    Dropout正则化和其他方法减少神经网络中的过拟合
    查看动态链接库中函数参数类型
    ANSI、ASCII、GB2312、GBK
    Unicode(UTF-8, UTF-16)令人混淆的概念
  • 原文地址:https://www.cnblogs.com/wenxingxu/p/9455874.html
Copyright © 2011-2022 走看看