【发布时间】:2021-01-02 13:06:25
【问题描述】:
我有一个任务,仅使用 bash 单行,我必须 ls 我的主目录中不遵循特定命名模式的特定目录。在我的主目录中,有一些目录的格式为 3 个小写字母后跟 3 个十进制数字。但是,还有其他目录不遵循这种格式。我必须列出这些文件并将信息输出到 txt 文件。以下是我迄今为止编写并正在试验的一些命令:
ls /home -1 | sed [^a-z][^a-z][^a-z].[^0-9][^0-9][^0-9]
ls /home -1 "[^[a-z][a-z][a-z][0-9][0-9][0-9]]"
ls /home -1 *{[^a-z][^a-z][^a-z].[^0-9][^0-9][^0-9]}*
在有人问之前,我知道通过 ls 命令的输出进行格式化和搜索不如 find 命令有效。但是我正在处理的任务要求我只能使用这些命令:ls、ps、sed、cut、paste、sort、tr、grep、awk、cat、uniq
【问题讨论】:
-
如果您可以使用
sed,请尝试使用grep -v the_valid_pattern -
你为什么用这么多
^?只是[a-z][a-z][a-z][0-9][0-9][0-9]。为什么要在两者之间加上.? -
@KamilCuk
^试图匹配不遵循命名模式的文件。 -
我找到了有效的答案:/bin/ls /home -1 | grep -v "^[a-z][a-z][a-z][0-9][0-9][0-9]$"
标签: bash shell directory wildcard ls