用bash shell script实现的find部分功能

#!/bin/bash

# Program:
#       Resign find commannd,and simplize usage mode.
#Usage:
#       f [-n][-m][-a][-c][-p][-s][-t] [path...]
#       -n=-name filename 
#       -a "[+|-][%Y-%M-%D]"=-atime date()-(%Y-%M-%D) //literal "+" before the last date visited
#       -c "[+|-][%Y-%M-%D]"=-ctime date()-(%Y-%M-%D) //literal "-" after the last date changed
#       -m "[+|-][%Y-%M-%D]"=-mtime date()-(%Y-%M-%D) //no literal "+|-" equal to the last date modified
#       -p=-maxdepath value[1,2,3...]
#       -s=-size value[the size of file: 1b 1k 1m...]
#       -t=-type value[c,f,b...]
#       [path...]=the directory to be searched
# History:
#2022/12/15     pine    First Release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
myExec="find "
function getDate()
{
        str="${1}"
        strDate=${str:1}
        case "${str:0:1}" in
                "+")
                echo "+""$(($(($(date +%s)-$(date +%s --date="$strDate")))/(24*60*60)))"
                ;;
                "-")
                echo "-""$(($(($(date +%s)-$(date +%s --date="$strDate")))/(24*60*60)))"
                ;;
                *)
                echo $(($(($(date +%s)-$(date +%s --date="$strDate")))/(24*60*60)))
                ;;
esac
}

while getopts ':n:m:a:c:s:t:p:' OPTION; do
case "$OPTION" in
        n)
                argN=" -name ""\"${OPTARG}\""
                ;;
        a)
                argA=" -daystart -atime ""$(getDate ${OPTARG})"
                ;;
        m)
                argM=" -daystart -mtime ""$(getDate ${OPTARG})"
                ;;
        c)
                argC=" -daystart -ctime ""$(getDate ${OPTARG})"
                ;;
        s)
                argS=" -size ""${OPTARG}"
                ;;
        t)
                argT=" -type ""${OPTARG}"
                ;;
        p)
                argP=" -maxdepth ""${OPTARG}"
                ;;
        ?)
                echo "error"
                ;;
esac
done
shift "$(($OPTIND - 1))"
if [ ! -d "${1}" ] || [ "${1}" == "" ]; then
        echo "The path: ${1} is NOT exist in your system."
        exit 1
fi
myExec="${myExec}""${1}""${argP}""${argN}""${argA}""${argC}""${argM}""${argS}""${argT}"
# echo "${myExec}"
sh -c "${myExec}"

for example: f -n *.cpp -m -2022-12-23 ./
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值