首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

在Linux上如何一次性删除掉那些修改时间为指定日期的所有文件

2012-07-29 
在Linux下怎么一次性删除掉那些修改时间为指定日期的所有文件?问:在Linux下怎么一次性删除掉那些修改时间

在Linux下怎么一次性删除掉那些修改时间为指定日期的所有文件?

问:在Linux下怎么一次性删除掉那些修改时间为指定日期的所有文件?

?

答:脚本del_files_of_date.sh

用法:./del_files_of_date.sh <YYYY-mm-dd> <files...>

比如:./del_files_of_date.sh 2011-09-01 html/*.html

#!/bin/sh: ${2?"usage: $0 <YYYY-mm-dd> <files...>"}for f in "${@:2}"do        modify_time=$(stat --printf '%y' "$f")        if [[ $modify_time == $1* ]]; then                echo "$f" "$modify_time"                rm -v -- "$f"        fidone

?

下面是此脚本的一次执行示例

[root@jfht contents]# ./del_files_of_date.sh 2011-08-01 html/*.html
html/0041bb66458751c989fe55d8dd837458.html 2011-08-01 08:55:58.000000000 +0800
已删除“html/0041bb66458751c989fe55d8dd837458.html”
html/05602e464e720e482fe0a33ac71198ea.html 2011-08-01 12:55:33.000000000 +0800
已删除“html/05602e464e720e482fe0a33ac71198ea.html”
……
……
html/ff4dd248f7f6b97bc07519d561d47111.html 2011-08-01 18:55:37.000000000 +0800
已删除“html/ff4dd248f7f6b97bc07519d561d47111.html”
[root@jfht contents]#

?

下面详细解释此脚本

?

第3行:: ${2?"usage: $0 <YYYY-mm-dd> <files...>"}

?

内建命令:(冒号),用来做参数扩展。如果没有,那么就会把后面${2...}的结果当做命令来执行。

#!/bin/sh: ${2?"usage: $0 <YYYY-mm-dd> <files...>"}for f in "${@:2}"; do [[ $(stat --printf '%y' "$f") == $1* ]] && rm -v -- "$f"; done

?

[root@jfht contents]# ./del_files_at_date.sh
./del_files_at_date.sh: line 3: 2: usage: ./del_files_at_date.sh <YYYY-mm-dd> <files...>
[root@jfht contents]# touch test1.txt 'test space.txt'
[root@jfht contents]# ./del_files_at_date.sh 2011-09-02 test*.txt
已删除“test1.txt”
已删除“test space.txt”
[root@jfht contents]#

?

?

热点排行