如何删除' Incoming11781rKD'等文件。

时间:2014-06-19 12:19:55

标签: bash

我有一个生成像“Incoming11781Arp”这样的文件的程序,总是Incoming,总有5个数字,但是有3个字母/大写/小写/数字/特殊情况_以任何方式。与Incoming11781_piIncoming11781rKD一样。

如何使用从cron作业运行的脚本删除它们?我试过了 -

#!/bin/bash
file=~/Mail/Incoming******
rm "$file"; 

但它没有说没有匹配的文件或目录。

2 个答案:

答案 0 :(得分:2)

不得双引号变量引用以进行路径名扩展 - 如果这样做,则将通配符视为文字。
因此:

rm $file

警告~/Mail/Incoming******无法按照您的想法运作,并且可能与更多文件相匹配,因为它等同于{{ 1}},意味着 启动的任何文件与~/Mail/Incoming*匹配。

要仅匹配以Incoming开头且后面跟着正好为6个字符的文件,请使用Incoming,正如@Jidder在评论中所建议的那样。


请注意,您可以使您的glob(模式)更具体:

~/Mail/Incoming??????

有关路径名扩展和模式语法的说明,请参阅file=~/Mail/Incoming[0-9][0-9][0-9][0-9][0-9][[:alpha:]_][[:alpha:]_][[:alpha:]_] 手册:http://www.gnu.org/software/bash/manual/bashref.html#index-pathname-expansion

答案 1 :(得分:0)

使用find命令...

可以达到同样的效果
$ directory='~/Mail/'
$ file_pattern='Incoming*'
$ find "${directory}" -name "${file_pattern}" -delete

前两行分别定义了目录和文件模式,find命令将继续删除该目录中的所有匹配文件。