zoukankan      html  css  js  c++  java
  • 1、如何过滤出已知当前目录下/data中的所有一级目录?

    测试环境,/data下有许多的目录、文件等:

    [root@oldboy2 /]# 
    [root@oldboy2 /]# cd /data
    [root@oldboy2 data]# ll
    total 32
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:27 111
    -rw-r--r--. 1 root     users    0 Apr 28 14:18 1.sh
    -rw-r--r--. 1 root     users    0 Apr 28 14:18 2.sh
    -rw-r--r--. 1 root     users    0 Apr 28 14:18 3.sh
    -rw-r--r--. 1 root     root     0 Apr 30 05:49 alex.txt
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 data
    -rwxr-xr-x. 1 root     root     0 Apr 30 05:49 ett.txt
    -rw-r--r--. 1 root     users   50 Apr 28 21:38 hello.txt
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:50 oldboy
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 test
    -rw-r--r--. 1 xiaoming users  296 Apr 29 11:15 test.txt
    -rw-------. 1 root     users  292 Apr 29 09:44 test.txt.bak
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 xiaomi

    目标:过滤出已知当前目录下/data中的所有一级目录

    解决方案:

    一、观察到 ll /data 中目录的信息都是以 d 开头,使用 grep,和正则筛选出来。

    [root@oldboy2 data]# ls -l |grep "^d"
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:27 111
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 data
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:50 oldboy
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 test
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 xiaomi

    ??二、观察到目录的第二列连接数都是 >1(=2),使用 awk 删选:

    [root@oldboy2 data]# ls -l |awk '$2>1'
    total 32
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:27 111
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 data
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:50 oldboy
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 test
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 xiaomi

    三、给目录一定的特征,想到 ls 的 -p 参数,让目录后跟/,那么用 grep 删选出 / 结尾的:

    [root@oldboy2 data]# ls -lp|grep '/$'
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:27 111/
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 data/
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:50 oldboy/
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 test/
    drwxr-xr-x. 2 root     root  4096 Apr 30 05:49 xiaomi/

    四、既然 ls 可以,那么 tree 当然可以,使用tree的 -F 参数,然后删选出 / :

    [root@oldboy2 data]# tree -L 1 -F |grep '/'
    ├── 111/
    ├── data/
    ├── oldboy/
    ├── test/
    └── xiaomi/

    五、直接使用 tree 的 -d 参数,只显示目录:

    [root@oldboy2 data]# tree -L 1 -d
    .
    ├── 111
    ├── data
    ├── oldboy
    ├── test
    └── xiaomi

    六、是时候使用 find 了,-maxdepth参数可以指定查找的目录级数为1,-type可以指定查找类型为目录,! 和 -name参数可以去除查找到的当前目录 . ,实现如下:

    [root@oldboy2 data]# find -maxdepth 1 -type d ! -name "."
    ./test
    ./xiaomi
    ./oldboy
    ./111
    ./data

    参考:李泳宜---预习视频

  • 相关阅读:
    python中使用cookies免登陆
    python中列表与元组的区别与转换
    python模块之mock
    python模块之Faker
    python模块之requests
    adb简单命令使用
    Mac下安装appium+python+Android sdk 环境完整流程
    git+pycharm结合使用
    github内的一些操作
    mac下git连接远程仓库gitee
  • 原文地址:https://www.cnblogs.com/xaomng/p/6825876.html
Copyright © 2011-2022 走看看