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



我正在尝试从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。因此,不确定是否有任何高端命令和脚本。

解决问题的第一个简单方法,根据您的需求进行推特:

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*" | ...

警告:非常小心

你这样列出你想要的文件:

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

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

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

相关内容

  • 没有找到相关文章

最新更新