linux bash查找几位数的文件名

时间:2015-04-20 00:09:10

标签: linux bash

我有一个包含文件jobs_1,jobs_2 ... jobs_77的文件夹。我用了

find  . -name  "job_[0-9]{1,2}"  -type  f

列出这些文件,但没有输出。有什么问题?

2 个答案:

答案 0 :(得分:3)

或者,友好:

find  . -regextype posix-awk -regex  ".*job_[0-9]{1,2}.*"  -type  f

注意:例如posix-extended在这种情况下会产生相同的结果;但是天生懒惰我选择了awk,因为它更短:}

答案 1 :(得分:1)

问题中命令的第一个问题:

find .-name "job_[0-9]{1,2}" -type f

...您正在搜索以字符串-regextype posix-awk而不是-regex开头的文件,因此上述命令将找不到任何名为files s 的文件 _1,工作 s _2 ...工作 s _77。

使用的正确命令是:

find . -regextype posix-awk -regex ".*jobs_[0-9]{1,2}.*" -type f -exec basename {} \;
  • find - 此选项更改posix-awk理解的正则表达式语法,允许-exec basename {} \;程序使用find . -regextype posix-awk -regex ".*jobs_[0-9]{1,2}.*" -type f正则表达式。
  • find -type f - 将-regex的结果从文件的完整路径转换为文件名,以便只在结果中显示文件名。这使find -type f -regex选项的结果与nivoslider的结果类似,而Banner title选项只显示文件名。