grep与多个NOT和AND运算符

时间:2015-02-27 16:55:07

标签: bash grep

我正在寻找带有NOT和AND条件的多重grep。我有一个带有txt文件的目录和一些日志包含在文件名中的csv文件。我想删除不包含今天日期的csv文件。该目录包含具有以前日期的csv文件。所以我在bash中尝试下面的代码

#!/bin/bash
now=$(date "+%m-%d-%Y")
dir="/var/tmp/"
for f in "$dir"/*; do
   ls -1 | grep -v *$now* | grep *csv* | xargs rm -f
done

这不是删除任何东西。如果我取出grep csv 运算符,则会删除文本文件。只有CSV文件有日期,文本文件没有。请指教。

1 个答案:

答案 0 :(得分:2)

我建议使用find实用程序:

find /var/tmp -maxdepth 1 -name '*.csv' ! -name "*$now*" -delete

如果你想用grep,

ls -1 /var/tmp/*.csv | grep -v "$now" | xargs rm -f

也应该有用。

-delete命令中编辑find而不是-exec rm '{}' \;。谢谢@amphetamachine。