知道如何在使用 linux 命令的哪个月到哪个月之间删除我的旧文件吗?
例如我想要做的是:
rm oldfile.txt april until may 2012
知道如何解决我的问题吗?
谢谢
知道如何在使用 linux 命令的哪个月到哪个月之间删除我的旧文件吗?
例如我想要做的是:
rm oldfile.txt april until may 2012
知道如何解决我的问题吗?
谢谢
一个三步过程,使用find
:
touch -d '2012-04-01 00:00:00' STARTING
touch -d '2012-04-30 23:59:59' STOPPING
find . -type f -newer STARTING -not -newer STOPPING -exec rm {} \;
编辑:请注意,这将删除 4 月至 5 月之间的文件。因此,2012 年 4 月 1 日至 2012 年 4 月 30 日之间的文件将被删除。此外,在实际删除它们之前查看您将要删除的文件列表也是一个好主意。为此,请更改rm
为ls -la
。
您可以首先在您可以轻松识别的日期中显示文件及其最后修改时间stat
:
$ stat -c '%n %z' foo bar
2012-02-25 23:39:31.000000000 +0000 foo
2012-02-25 23:43:35.000000000 +0000 bar
结合它,grep
您可以将列表过滤到您想要的月份:
$ stat -c '%n %z' foo bar | grep -E '^2012-0[45]-.. '
这应该为您提供在 2012 年 4 月至 2012 年 5 月之间修改过的文件。然后,您将只想提取文件名(从第四个字段开始)进行删除,使用cut
:
$ stat -c '%n %z' foo bar | grep -E '^2012-0[45]-.. ' | cut -f 4- -d' '
一旦你对输出感到满意,然后像这样删除它们(这是不归路,所以系好安全带:):
$ !! | while read filename; do rm -f "$filename"; done
注意:该!!
符号会重复最后一个命令,因此您不必重新键入它。在这种情况下,它将重复 stat 命令并在最后进行最终剪切。
awk 可以帮助您从单个月(或一组月)中删除文件
ls -l | awk '{if ($6=="Apr" || $6=="Mai") print $9}' | xargs rm