【问题标题】:Unix Move files without matching a patternUnix 移动文件而不匹配模式
【发布时间】:2015-06-03 13:30:13
【问题描述】:

我在 unix move 上查询不匹配模式的文件。示例如下:

目录列表

 20150325
 20150326
 20150327
 20150328
 archieve

现在,我想用一个命令将所有与 20150328 不匹配的文件移动到存档目录中。请帮忙......

【问题讨论】:

标签: unix


【解决方案1】:

使用 -name 参数和 !否定运算符:

find . -type f ! -name 20150328 -exec mv {} archieve \;

{} 匹配刚刚找到的文件,转义的分号终止执行的命令。 要排除多个文件,只需重复 ! -name filename 子句

【讨论】:

  • 这个工作.. 但有一些警告信息如下: mv: 0653-405 ./archieve/20150327 和 archieve/20150327 是相同的。对于所有文件
  • 还有多个文件怎么样。我想移动所有文件,留下具有 2 个条件的文件...比如说 .. 根据上面的示例,我想保留 20150328 和 20150327。
  • @Bhabani Shankar 查看我添加的关于多重排除的句子。我不确定您为什么会收到有关相同文件的警告。,您的所有源文件是否都在一个目录中具有唯一名称?
【解决方案2】:

执行:shopt -s extglob 之后做:mv !(20150328) "destination"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2020-06-05
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多