我有一个目录,其中包含大约 2,000 个文件名不同的文件。
我需要打印出所有包含字母 o 并在 o 右侧有 6 个两个空格的文件名。例如:
flow6,tro168,arrow6ish。
我会使用类似的东西:
find -name 'o*6'
请不要解析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的更多信息
find . -name "*o?6*"
应该达到你想要的。printf
如果文件包含在嵌套的子目录中,这比解决方案更可取。