CentOS 7 获取某个目录下的一级目录
题目:
已知/root目录下,有如下目录和文件。获取/root目录中的一级目录,不包含子目录和文件,以及隐藏的子目录和文件。
[root@centos7 ~]# tree -a /root/root├── anaconda-ks.cfg├── .bash_history├── .bash_logout├── .bash_profile├── .bashrc├── .cshrc├── data│ ├── test│ │ └── a│ │ └── b│ │ └── c│ │ └── d│ │ └── e│ │ └── f│ │ └── g│ └── test.txt├── data2├── data3├── .tcshrc├── test.txt└── .viminfo11 directories, 10 files
方法 1 :使用 tree 命令
[root@centos7 ~]# tree -dL 1 /root/root├── data├── data2└── data33 directories
其中参数d表示目录,参数L表示目录深度,后面数字 1 指定了目录深度。
方法 2 :使用 find 命令
[root@centos7 ~]# find -maxdepth 1 -type d ! -name "."./data2./data3./data[root@centos7 ~]#
其中参数-maxdepth 1表示目录深度 1 ,参数-type d表示查找类型为目录,参数! -name "."表示排除名为.的目录。
方法 3 :使用 ls 和 grep 命令
使用ls -l /root命令,列出/root目录下的文件和目录。
[root@centos7 ~]# ls -l /roottotal 20-rw-------. 1 root root 1707 Apr 10 20:32 anaconda-ks.cfgdrwxr-xr-x. 3 root root 4096 Apr 28 18:24 datadrwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3-rw-r--r--. 1 root root 37 Apr 18 20:23 test.txt
然后,配合使用grep "^d"命令,找出列表中以d开头的。例如这样的drwxr-xr-x就是目录了。
[root@centos7 ~]# ls -l /root | grep "^d"drwxr-xr-x. 3 root root 4096 Apr 28 18:24 datadrwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3
方法 4 :使用 ls 和 awk 命令
使用ls -l /root命令,列出/root目录下的文件和目录。
[root@centos7 ~]# ls -l /roottotal 20-rw-------. 1 root root 1707 Apr 10 20:32 anaconda-ks.cfgdrwxr-xr-x. 3 root root 4096 Apr 28 18:24 datadrwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3-rw-r--r--. 1 root root 37 Apr 18 20:23 test.txt
然后,配合使用awk命令,筛选列表中第二列的值大于 1 的行。
[root@centos7 ~]# ls -l /root | awk '$2>1'total 20drwxr-xr-x. 3 root root 4096 Apr 28 18:24 datadrwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3[root@centos7 ~]#
方法 5 :使用 ls 和 grep 命令
使用ls -F命令,列出/root目录下的文件和目录。其中,参数-F表示在每个输出项后追加文件的类型标识符。具体含义:*表示具有可执行权限的普通文件,/表示目录,@表示符号链接,|表示命令管道 FIFO,=表示 sockets 套接字。当文件为普通文件时,不输出任何标识符。
[root@centos7 ~]# ls -F /rootanaconda-ks.cfg data/ data2/ data3/ test.txt
然后,配合使用grep命令,在列表中找出包含斜杠/的项。
[root@centos7 ~]# ls -F /root | grep "/"data/data2/data3/
(完)