Shell脚本获取所有以特定字母开头的目录

Shell脚本获取所有以特定字母开头的目录

我需要编写一些shell脚本来获取以某些字母开头的所有目录并将结果列表保存在txt文件中

例如。

-全部大写的目录

-所有以“Ab”开头的目录

有什么建议吗?

答案1

目录全部大写:

shopt -s nullglob
for d in [[:upper:]]*/ ; do
    echo "$d"
done > uppercase-dirs.txt

Ab所有以:开头的目录

shopt -s nullglob
for d in Ab*/ ; do
    echo "$d"
done > Ab-dirs.txt

欲了解更多信息,请参阅bash 手册的模式匹配部分

请注意,您的目录可能包含不寻常的字符,例如换行符。在这种情况下,将每个目录作为新行回显到文本文件将会给出不正确的结果。解决这个问题的一种方法是使用 nul 字符来分隔每个目录。您可以使用 printf 来代替:

shopt -s nullglob
for d in Ab*/ ; do
     printf "%s\0" "$d"
done 

另请注意,shopt -s nullglob当模式没有匹配项时,有必要处理这种情况。如果没有它,Ab*/将扩展到Ab*/如果没有匹配项,这不是您想要的。Ab*/如果没有匹配项,则扩展为空字符串。

欲了解更多信息,请参阅shoptbash 手册的一部分

相关内容