本文总结如何使用 shell
命令获取干净的子文件夹目录或子文件目录 1。
Updated: 2022 / 8 / 22
Shell | 子文件夹 / 文件目录
文件夹
ls -d 命令
在 Linux
中,ls
命令默认会列出所给目录下的所有文件名,包括子目录名。
但如果只想列出当前目录下的一级子目录名,可以使用 ls -d */
命令,以下面为例:
可以看到,ls -d */
命令只列出 TestDir
的一级子目录名,且目录名以 /
结尾。
以此类推,如果想列出当前目录下的二级子目录名,可以使用 ls -d */*/
,以下面为例:
ls -F 命令
ls -F . |grep /$
可列出当前目录下的文件下面的子目录,以下面为例:
find -d 命令
使用 find
并指定文件类型进行查找判断,以下面为例:
* 通配符
查看 man bash
的 Pathname Expansion
小节,对此说明为 If followed by a /, two adjacent *s will match only directories and subdirectories.
即,当星号 *
通配符后面跟着 /
字符时,路径名扩展结果只有目录名和子目录名。
如果只是想获取当前目录下的子目录名,直接为赋值为 */
即可,不要用引号括起来。
比如,以下面为例:
可以看到,subdirs=*/
语句会把 subdirs
变量赋值为当前目录下的子目录名,目录名会以 /
结尾。
当在 shell 脚本中使用时,由于执行 shell 脚本的工作目录可能不固定,也可以通过绝对路径来寻址。
以此类推,如果想列出当前目录下的二级子目录名,可以以下面为例:
文件
ls -1 命令
一般来说,ls
命令会在一行中打印多个文件名。如果想要每行只打印一个文件名,可以使用 -1
选项。注意,这里是数字 1
,而不是字母 l
。
查看 man ls
对 -1
选项说明为 -1 list one file per line. Avoid 'n' with -q or -b
。即,-1
选项会让每行只打印一个文件名,以下面为例:
find -f 命令
使用 find
并指定文件类型进行查找判断,以下面为例: