2013-03-01 154 views
1

我正在运行一个模拟,导致大量的文件。这些文件被命名为:a-*000.dat, a-*100.dat.....a-*500.dat....a-*900.dat,其中*是两位数字。我想保留a- * 000和a- * 500,并删除其他所有内容。 我试过rm a-*{100,200,300,400,600,700,800,900},它工作。但是我必须为*的每个值运行这个。你能建议一个shell脚本,这样我可以避免多次运行rm。 PS:希望这个问题明确,客观,具体。在删除/标记此问题之前,请考虑给出具体的反馈意见。Shell脚本删除一组文件

MADHUKAR

回答

0

我认为你可以做到这一点:

rm a-*[1-4,6-9]00.dat 

关于你的尝试:rm a-*{100,200,300,400,600,700,800,900}.dat,我不明白为什么你需要运行它为前缀的每一个值。它应该工作得很好,如果你直接输入 - 与*就位,这相当于我上面的建议(只有一点点)。请注意,如果您真的需要多次执行rm,可以通过在脚本中使用for循环来自动执行此操作。

+0

谢谢。我应该想到它! – user2122377 2013-03-01 06:49:59

0
find -regextype posix-basic -regex './a-[0-9]\{3\}00.dat' -not -regex './a-*[0,5]\{1\}00.dat' - exec rm -i {} \; 

看起来丑陋,但在基本正则表达式不足时可扩展。