CentOS 7 获取某个目录下的一级目录

题目:


已知/root目录下,有如下目录和文件。获取/root目录中的一级目录,不包含子目录和文件,以及隐藏的子目录和文件。

  1. [root@centos7 ~]# tree -a /root
  2. /root
  3. ├── anaconda-ks.cfg
  4. ├── .bash_history
  5. ├── .bash_logout
  6. ├── .bash_profile
  7. ├── .bashrc
  8. ├── .cshrc
  9. ├── data
  10. ├── test
  11. └── a
  12. └── b
  13. └── c
  14. └── d
  15. └── e
  16. └── f
  17. └── g
  18. └── test.txt
  19. ├── data2
  20. ├── data3
  21. ├── .tcshrc
  22. ├── test.txt
  23. └── .viminfo
  24. 11 directories, 10 files

方法 1 :使用 tree 命令


  1. [root@centos7 ~]# tree -dL 1 /root
  2. /root
  3. ├── data
  4. ├── data2
  5. └── data3
  6. 3 directories

其中参数d表示目录,参数L表示目录深度,后面数字 1 指定了目录深度。

方法 2 :使用 find 命令


  1. [root@centos7 ~]# find -maxdepth 1 -type d ! -name "."
  2. ./data2
  3. ./data3
  4. ./data
  5. [root@centos7 ~]#

其中参数-maxdepth 1表示目录深度 1 ,参数-type d表示查找类型为目录,参数! -name "."表示排除名为.的目录。

方法 3 :使用 ls 和 grep 命令


使用ls -l /root命令,列出/root目录下的文件和目录。

  1. [root@centos7 ~]# ls -l /root
  2. total 20
  3. -rw-------. 1 root root 1707 Apr 10 20:32 anaconda-ks.cfg
  4. drwxr-xr-x. 3 root root 4096 Apr 28 18:24 data
  5. drwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2
  6. drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3
  7. -rw-r--r--. 1 root root 37 Apr 18 20:23 test.txt

然后,配合使用grep "^d"命令,找出列表中以d开头的。例如这样的drwxr-xr-x就是目录了。

  1. [root@centos7 ~]# ls -l /root | grep "^d"
  2. drwxr-xr-x. 3 root root 4096 Apr 28 18:24 data
  3. drwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2
  4. drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3

方法 4 :使用 ls 和 awk 命令


使用ls -l /root命令,列出/root目录下的文件和目录。

  1. [root@centos7 ~]# ls -l /root
  2. total 20
  3. -rw-------. 1 root root 1707 Apr 10 20:32 anaconda-ks.cfg
  4. drwxr-xr-x. 3 root root 4096 Apr 28 18:24 data
  5. drwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2
  6. drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3
  7. -rw-r--r--. 1 root root 37 Apr 18 20:23 test.txt

然后,配合使用awk命令,筛选列表中第二列的值大于 1 的行。

  1. [root@centos7 ~]# ls -l /root | awk '$2>1'
  2. total 20
  3. drwxr-xr-x. 3 root root 4096 Apr 28 18:24 data
  4. drwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2
  5. drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3
  6. [root@centos7 ~]#

方法 5 :使用 ls 和 grep 命令


使用ls -F命令,列出/root目录下的文件和目录。其中,参数-F表示在每个输出项后追加文件的类型标识符。具体含义:*表示具有可执行权限的普通文件,/表示目录,@表示符号链接,|表示命令管道 FIFO,=表示 sockets 套接字。当文件为普通文件时,不输出任何标识符。

  1. [root@centos7 ~]# ls -F /root
  2. anaconda-ks.cfg data/ data2/ data3/ test.txt

然后,配合使用grep命令,在列表中找出包含斜杠/的项。

  1. [root@centos7 ~]# ls -F /root | grep "/"
  2. data/
  3. data2/
  4. data3/

(完)