【问题标题】:Expression that removes files except for some删除除某些文件之外的文件的表达式
【发布时间】:2014-09-06 08:01:50
【问题描述】:

此文件列表:

FILE0001
FILE0002
FILE0003
FILE0004
FILE0005
FILE0006
FILE0007
FILE0008
FILE0009
FILE0010

我想删除除以下之外的所有内容:

FILE0001 
FILE0008 
FILE0010 

这个表达式怎么做?

可能会有一个非常耗时的表达式,因为文件很大。 该目录中还有其他文件。这不能被影响或删除。即使在相同的模式名称中。

例子:

FILE0001.1
FILE0002.2

【问题讨论】:

  • 请详细说明:它们都在同一个文件夹中吗?您是否已有静态文件列表?到目前为止,您尝试过什么?
  • rm all files except some的可能重复

标签: regex linux bash


【解决方案1】:
GLOBIGNORE="FILE0001:FILE0008:FILE0010"
echo rm *

【讨论】:

  • 观察。如有必要,请记住重置。 $ unset GLOBIGNORE
【解决方案2】:

bash 模式 (http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching)

shopt -s extglob
echo rm FILE00!(01|08|10)

如果您满意,请删除“回声”。

【讨论】:

  • 您的问题没有提及这些其他文件。如果您有进一步的要求需要告诉我们,请编辑问题。
【解决方案3】:

假设所有文件都在您执行命令的同一目录中并且没有其他文件或路径需要排除,这样的事情应该可以解决问题:

find . ! -name 'FILE0001' ! -name 'FILE0008' ! -name 'FILE0010' -exec rm {} /dev/null \;

【讨论】:

  • 我假设/dev/null 的重点是在rm 没有获取任何文件的情况下,但如果-exec 没有获取任何文件,它实际上不会运行。
  • @BroSlow 尝试通过删除 -exec 来运行上述代码
  • 哪个打印了很多不等于FILE00(01|08|10)的文件?
  • 不提供服务!因此将删除目录中的所有其他文件。
  • @Ivanelson 我确实说过“没有其他文件或路径需要排除”
猜你喜欢
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
相关资源
最近更新 更多