Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
holinhot
V2EX  ›  Linux

shell 怎么打印 5 天前到 30 天前

  •  
  •   holinhot · May 7, 2015 · 2978 views
    This topic created in 4099 days ago, the information mentioned may be changed or developed.

    mytime=$(date -d -5day +"%Y%m%d")
    shell怎么打印5天前到30天前
    输出这样的
    20150502
    20150501
    20150430
    20150429
    .....

    9 replies    2015-05-08 13:15:47 +08:00
    extreme
        1
    extreme  
       May 7, 2015   ❤️ 1
    使用Bash Shell的for循环:
    for (( i = 5 ; i != 31 ; i = ((${i} + 1))))
    do
    date -d -${i}day +"%Y%m%d"
    done
    holinhot
        2
    holinhot  
    OP
       May 7, 2015
    @extreme 怎么把循环后的定义到变量
    timeee=20150429
    timeee=20150428
    timeee=20150427

    然后好删除文件。
    rm -rf 20150429
    rm -rf 20150428
    rm -rf 20150427
    Jaylee
        3
    Jaylee  
       May 7, 2015
    @holinhot 已经告诉你答案了,还是要自己稍微动点脑筋的
    extreme
        4
    extreme  
       May 8, 2015
    @holinhot 替换下do到done之间的命令就行了。
    没必要加入到另一个变量吧:
    for (( i = 5 ; i != 31 ; i = ((${i} + 1))))
    do
    rm -rf $(date -d -${i}day +"%Y%m%d")
    done
    holinhot
        5
    holinhot  
    OP
       May 8, 2015
    @Jaylee 我是小学生 刚学
    holinhot
        6
    holinhot  
    OP
       May 8, 2015
    @extreme 应该要加入另外变量。因为我从文本读取了变量
    rm -rf servername1 /20150427

    其中servername是从txt种读行取的。最终是
    rm -rf servername1 /20150429
    rm -rf servername2 /20150429
    rm -rf servername3 /20150429
    rm -rf servername4 /20150429


    rm -rf servername1 /20150428
    rm -rf servername2 /20150428
    rm -rf servername3 /20150428
    rm -rf servername4 /20150428

    rm -rf servername1 /20150427
    rm -rf servername2 /20150427
    rm -rf servername3 /20150427
    rm -rf servername4 /20150427
    holinhot
        7
    holinhot  
    OP
       May 8, 2015
    @extreme

    for (( i = 5 ; i != 31 ; i = ((${i} + 1))))
    do
    rm -rf $(date -d -${i}day +"%Y%m%d")
    done 这个我开始想到了 试了好像不成功
    holinhot
        8
    holinhot  
    OP
       May 8, 2015
    @extreme
    cat server_list.txt | xargs -i rm -rf /backup/{}/日期变量
    extreme
        9
    extreme  
       May 8, 2015
    @holinhot
    又不说清楚点,谁清楚你的具体需求呢?
    还是用for循环:
    unset NTD
    for (( i = 5 ; i != 31 ; i = ((${i} + 1))))
    do
    NTD=${NTD}$(date -d -${i}day +"%Y%m%d"),
    done
    for server in $(cat server_list.txt)
    do
    eval rm -rf /路径/${server}/{$(echo ${NTD} | sed -r "s/,$//g")}
    done
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5401 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:26 · PVG 16:26 · LAX 01:26 · JFK 04:26
    ♥ Do have faith in what you're doing.