删除日期小于特定日期的所有具有相似模式的文件

时间:2013-02-03 19:41:14

标签: linux unix sunos

我正在尝试从Unix目录中删除文件,该目录以EXPORT_v1x0开头,其日期小于2013-01-25(2013年1月25日)。我可以逐个删除这些文件,但删除所有文件需要几天时间。有没有更好的方法来删除具有特定模式的文件?

以下是我做ls时的示例文件

bash-3.00$ ls /data/bds/real
EXPORT_v1x0_20120811.dat.gz 
EXPORT_v1x0_20120811.dat.gz   

如果您看到上述文件。每个文件都有一个日期。假设我们将此文件考虑在内 -

EXPORT_v1x0_20120811.dat.gz

日期为20120811因此,我需要删除所有以EXPORT_v1x0开头并且日期小于20130125的文件。因此,如果我应该删除所有日期小于20130125的文件,那么上面提到的所有文件都会被删除,因为日期小于20130125

注意: - 所有文件都具有与我上面提到的完全相同的模式。只有日期和后面跟着的其他数字不同。

所以我只需要删除所有以EXPORT_v1x0开头并且日期小于20130125的文件。

我正在运行SunOS。我还在更好地学习Unix。所以不确定任何高端命令和脚本。

2 个答案:

答案 0 :(得分:1)

解决问题的第一个天真的方法,根据您的需要进行调整:

find . | awk -F'_' '$3<20130125' | xargs rm

阻止find进行递归搜索并保留在当前文件夹中:

find . \( ! -name . -prune \) -type f | ...

第二次更新:

name参数添加到仅列出包含字符串“EXPORT_v1x0”的文件

find . \( ! -name . -prune \) -type f -name "EXPORT_v1x0*" | ...

使find非递归的更简单方法是使用maxdepth标志

find . -maxdepth 1 -type f -name "EXPORT_v1x0*" | ...

答案 1 :(得分:0)

警告:要非常小心

列出您想要的文件:

ls -1 | awk -F _ '$3<"20130125"'

如果它给出了正确的文件列表,你可以

ls -1 | awk -F _ '$3<"20130125"' | xargs rm