将文件列在不以vXXX结尾的目录中

时间:2011-11-01 16:14:34

标签: bash

我有一个目录,其中包含如下文件列表:

  1.html
  1.html.v1
  1.html.v2
  2.html
  2.html.v1
  a.pdf
  a.pdf.v1
  b.pdf
  b.pdf.v1
  b.pdf.v2

在bash中,如何列出所有不以.v [Number]结尾的文件?

提前致谢。

3 个答案:

答案 0 :(得分:2)

仅限bash:

shopt -s extglob
ls !(*.v[0-9])

答案 1 :(得分:1)

您可以使用grep -v过滤掉.v[0-9]*内容:

ls | grep -v ".v[0-9]*$"

对于你的例子,这给出了

1.html
2.html
a.pdf
b.pdf

答案 2 :(得分:0)

如果你想通过滤除不需要的结果来做到这一点 - @Jonas Heidelberg's Answer (below)是最好的方法我个人觉得列出你做的所有文件想要展示往往更快。

ls *.v[#] - 其中# 想要显示的数字将执行此操作:

# All files
[ 09:20 Jonathan@MacBookPro ~ ]$ ls -l *.v*
-rw-r--r--  1 Jonathan  staff     0B Nov  1 09:20 a.v1
-rw-r--r--  1 Jonathan  staff     0B Nov  1 09:20 b.v2
-rw-r--r--  1 Jonathan  staff     0B Nov  1 09:20 c.v3

# Filtered
[ 09:20 Jonathan@MacBookPro ~ ]$ ls -l *.v[23]
-rw-r--r--  1 Jonathan  staff     0B Nov  1 09:20 b.v2
-rw-r--r--  1 Jonathan  staff     0B Nov  1 09:20 c.v3
[ 09:20 Jonathan@MacBookPro ~ ]$ ls -l *.v[13]
-rw-r--r--  1 Jonathan  staff     0B Nov  1 09:20 a.v1
-rw-r--r--  1 Jonathan  staff     0B Nov  1 09:20 c.v3