终端:列出包含特定目录名称的子目录

终端:列出包含特定目录名称的子目录

我正在尝试编写一个命令来列出/usr/share/icons包含名为“places”的文件夹的所有目录,但是仅有的在第一个子目录中。

为了使事情更清楚,有很多图标主题,如下所示:

/usr/share/icons/theme/places

还有许多仅用于通用图标的目录,如下所示:

/usr/share/icons/theme2/32x32/places

我只想列出第一个场景中的目录。

更新:当我说我需要它来列出 /usr/share/icons 中的目录时,我的意思是我需要输出仅包含文件夹名称本身。这意味着,我认为 awk 或 sed 是必要的。再次感谢。

答案1

编辑

使用bashglob 星号就足够了。这将匹配其中所有/usr/share/icons/包含places子目录的目录。

$ ls -d /usr/share/icons/*/places                                  
/usr/share/icons/breeze-dark/places/
/usr/share/icons/breeze/places/
/usr/share/icons/Deepin-2013/places/
/usr/share/icons/Deepin-icons/places/
/usr/share/icons/Deepin/places/
/usr/share/icons/Deepin-sapphire/places/
/usr/share/icons/Faenza-Dark/places/

原始答案

find命令通常用于搜索文件或目录。下面的命令将递归地进入下面的所有目录,/usr/share/icons并列出places名称中包含 的所有目录。

find /usr/share/icons -type d -iname "*places*"  

示例输出

$ find /usr/share/icons -type d -iname "*places*" | head -n 5                  
/usr/share/icons/Numix-Light/scalable/places
/usr/share/icons/Humanity/places
/usr/share/icons/ubuntu-mono-light/places
/usr/share/icons/Deepin-2013/places
/usr/share/icons/Human/48x48/places

编辑

-printf "%h\n"允许查找找到文件名的目录路径;awk使用字段分隔符/允许打印最后一个($NF)项。

================
xieerqi:
$ find /usr/share/icons -maxdepth 2 -type d -iname "*places*"  -printf "%h\n"  
/usr/share/icons/Humanity
/usr/share/icons/ubuntu-mono-light
/usr/share/icons/Deepin-2013
/usr/share/icons/Faenza-Dark
/usr/share/icons/ubuntu-mono-dark
/usr/share/icons/Deepin-icons
/usr/share/icons/Deepin-sapphire
/usr/share/icons/Deepin
/usr/share/icons/Humanity-Dark
/usr/share/icons/Faenza
/usr/share/icons/ubuntukylin-icon-theme
/usr/share/icons/unity-icon-theme

================
xieerqi:
$ find /usr/share/icons -maxdepth 2 -type d -iname "*places*"  -printf "%h\n" | awk -F '/' '{print $NF}'                         
Humanity
ubuntu-mono-light
Deepin-2013
Faenza-Dark
ubuntu-mono-dark
Deepin-icons
Deepin-sapphire
Deepin
Humanity-Dark
Faenza
ubuntukylin-icon-theme
unity-icon-theme

相关内容