代码之家  ›  专栏  ›  技术社区  ›  Alsciende

从shell填充中排除特定文件名

  •  11
  • Alsciende  · 技术社区  · 15 年前

    我想排除一个特定的文件名(比如, fubar.log )从shell(bash)globbing字符串, *.log . 我所尝试的似乎都不起作用,因为globbing不使用标准重新设置。

    测试用例:目录包含

    fubar.log
    fubaz.log
    barbaz.log
    text.txt
    

    而且只有 fubaz.log barbaz.log 必须按全局扩展。

    2 回复  |  直到 12 年前
        1
  •  18
  •   Servy    12 年前

    如果你使用bash

    #!/bin/bash
    shopt -s extglob
    ls !(fubar).log
    

    或没有 extglob

    shopt -u extglob
    for file in !(fubar).log
    do
      echo "$file"
    done
    

    for file in *log
    do
       case "$file" in
         fubar* ) continue;;
         * ) echo "do your stuff with $file";;
       esac 
    done
    
        2
  •  2
  •   Roger Choi    15 年前

    你为什么不用grep?例如:

    当读取行时ls grep-v fubar;do echo“reading$line”;done;

    下面是输出:

    正在读取barbaz.log 正在读取fubaz.log 正在读取text.txt