如何过滤linux中的目录文件

时间:2012-02-03 10:43:52

标签: linux shell command-line directory

如何显示主目录中个人目录中所有文件的类型 的是:

  1. 不要以某些字母开头,例如ak
  2. 并且他们名字中的第三个字母不是数字而不是字母 (大写或小写)

2 个答案:

答案 0 :(得分:2)

使用正则表达式尝试grep:

ls -1 | grep -ve "^a\|^k\|^..[0-9]\|^..\w" | cut -d . -f 2

-v:否决比赛 -e:使用正则表达式

-1是为了确保您在一行中没有多个文件。

正则表达式意味着:

  1. ^a\|^k:开头没有ak
  2. ^..[0-9]:第三个位置没有数字(.是一个位置的通配符)
  3. ^..\w:第三个位置没有字(字符或_)。
  4. 它有点长,但我认为这是一种潜入正则表达式的goog方式。有关正则表达式的更多详细信息,请查看示例here

    cut命令查找分隔符.并打印其第二部分(-f 2)。

答案 1 :(得分:0)

如果“类型”是指扩展名:

$ ls | egrep '^[^ak].[^a-zA-Z0-9]' | sed -e s/.*\\.//

[^a-zA-Z0-9]有一些缩写,但这个很容易理解和适应。