0

我有一个目录,其中包含大约 2,000 个文件名不同的文件。

我需要打印出所有包含字母 o 并在 o 右侧有 6 个两个空格的文件名。例如:

flow6,tro168,arrow6ish。

我会使用类似的东西:

find -name 'o*6'
4

2 回答 2

3

请不要解析ls输出(如线程前面所建议的那样),而是试试这个:

printf '%s\n' *o?6*

例子 :

$ ls -1
arrow6ish
flow6
o6
oaaaaaaaaa6
tro168

$ printf '%s\n' *o?6*
arrow6ish
flow6
tro168

如果您需要对结果运行命令,最简单的是

commandX *o?6*

这就是全局魔法。

如果您需要递归,请使用

find . -type f -name '*o?6*'

ls是一种交互式查看文件信息的工具。它的输出是为人类格式化的,并且会导致脚本中的错误。使用 glob 或 find 代替。了解原因: http: //mywiki.wooledge.org/ParsingLs


了解有关glob的更多信息

于 2013-03-14T21:11:11.800 回答
1
find . -name "*o?6*"

应该达到你想要的。printf如果文件包含在嵌套的子目录中,这比解决方案更可取。

于 2013-03-14T21:16:39.297 回答