tec*_*fun 1 linux command-line linux-mint
在 linux 命令行中,如何仅列出当前目录中的数字(仅包含 0 到 9 的名称)文件名?
这是如何在 linux 命令提示符下获取系统上的进程 ID 列表的后续问题?,我跑过ls的地方/proc/。我现在试图排除除进程 ID 目录之外的所有内容。
使用ls管道到 grep -E(具有附加正则表达式功能的扩展 grep)来搜索仅包含数字字符的所有文件名:
ls | grep -E '^[0-9]+$'
Run Code Online (Sandbox Code Playgroud)
如果你想使用ls,你可以使用:
ls *[[:digit:]]*
Run Code Online (Sandbox Code Playgroud)
该*图示操作将匹配任何[[:digit:]]。您还可以使用:
ls *[0-9]*
Run Code Online (Sandbox Code Playgroud)
这也匹配具有数字 0-9 的文件或目录。
如果您有与 glob 模式匹配的子目录,您可以使用-d开关使 ls 不会递归到它们中。
不管你的问题标题是什么,我想向你展示一个解决方案find。它有一个正则表达式选项 ( -regex),因此[0-9]*将匹配仅由数字组成的文件名。
要仅-type f递归查找当前目录 ( .)下的文件 ( ) ,请使用
find . -type f -regex ".*/[0-9]*"
Run Code Online (Sandbox Code Playgroud)
将.*/在正则表达式是必要的,因为正则表达式“是整个路径,而不是搜索上的匹配。 ”( man find)。因此,如果您只想在当前目录中查找文件,请\./改用:
find . -type f -regex "\./[0-9]*"
Run Code Online (Sandbox Code Playgroud)
但是,这不是非常理想,因为在这种情况下 find 也会递归搜索,然后仅过滤掉所需的结果。
| 归档时间: |
|
| 查看次数: |
33998 次 |
| 最近记录: |