问题描述
我有一个分配,其中仅使用bash单行,我必须在主目录中创建不遵循特定命名模式的特定目录。在我的主目录中,有些目录的格式为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,paste,sort,tr,grep,awk,cat,uniq
解决方法
如果可以先使用shopt -s extglob
,然后
ls -1d /home/!([a-z][a-z][a-z][0-9][0-9][0-9])
如果没有,
ls -1d /home/* | grep -v '/home/[a-z][a-z][a-z][0-9][0-9][0-9]$'
请阅读ls
,grep
和shopt
的手册页。
如果您不明白为什么要这么做,那么您还没有学到任何东西,而我们只是为您完成工作...