• linux命令笔记之ls


    假设要将全部的命令以一篇博客持续更新的方式去展现,将来在查找的时候非常不方便。出于这种考虑。将来将非常多命令都分开记录。
    这里,一些基础使用方法都不做太多说明。主要记录下平时经经常使用到的一些命令。

    命令: ls -[options] [操作对象]

    • 进入文件夹之后反查当前文件夹信息
    使用參数d就可以。
    eg: 
    hicode@test:~/lab/dir$ ls
    1.md  2.md  3.md  4.md  5.md  6.md
    
    想反查看dir文件夹的信息
    
    hicode@test:~/lab/dir$ ls -ld
    drwxrwxr-x 3 hicode hicode 4096 Jul  1 01:17 .
    

    注意的是。目的数不是文件夹时也能够查询。
    证明例如以下:

    hicode@test:~$ ls -ld test
    drwxrwxr-x 2 root root 4096 Jun 26 23:54 test
    hicode@test:~$ ls -ld music.raw 
    -rw------- 1 hicode hicode 1180762112 Dec 24  2013 music.raw
    
    • 仅列出当前文件夹下的全部一级子文件夹

    没有直接命令,使用grep 进行筛选。标志是ls 加上 -p后会给文件夹文件加上/符号

    -p, –indicator-style=slash
    append / indicator to directories

    eg:
    hicode@test:~$ ls -lp |grep /
    drwxr-xr-x 3 hicode hicode       4096 Dec 27  2013 Desktop/
    drwxr-xr-x 2 hicode hicode       4096 Nov  7  2013 Documents/
    drwxr-xr-x 2 hicode hicode       4096 Dec 25  2013 Downloads/
    drwxrwxr-x 7 hicode hicode       4096 Dec  9  2013 gothonweb/
    drwxrwxr-x 3 hicode hicode       4096 Jul  1 01:15 lab/
    drwxrwxr-x 4 hicode hicode       4096 Dec 24  2013 labs/
    
    

    另一种方法是ls -l 显示的记录中,文件夹都是以d 开头的。

    ls -l |grep ^d
    • 仅列出文件

    可写成ls -lp | grep [^/]$

    原理:即列出全部不以/ 结尾的输出,该输出来自ls -lp

    hicode@test:~$ ls -lhpa |grep '[^/]$'
    total 1.2G
    -rw-------  1 hicode hicode  29K Jul  1 00:49 .bash_history
    -rw-r--r--  1 hicode hicode  220 Nov  7  2013 .bash_logout
    -rw-r--r--  1 hicode hicode 3.5K Nov  7  2013 .bashrc
    -rw-------  1 hicode hicode  32M Dec 25  2013 core
    -rw-r--r--  1 hicode hicode   34 Jun 26 23:52 .dmrc
    -rw-r--r--  1 hicode hicode 8.3K Nov  7  2013 examples.desktop
    

    或者使用另外的方法:ls -l显示的文件都是以-开头作为文件标志 。因此也能够这么写,这个好理解。

    icode@test:~$ ls -l |grep ^-
    -rw------- 1 hicode hicode   33206272 Dec 25  2013 core
    -rw-r--r-- 1 hicode hicode       8445 Nov  7  2013 examples.desktop
    -rw-rw-r-- 1 hicode hicode        279 Aug  1  2005 hosts
    -rw-r--r-- 1 hicode hicode         26 Jun 24 22:28 issue
    -rw-rw-r-- 1 hicode hicode        176 Jun 24 21:46 log1.txt
    -rw-rw-r-- 1 hicode hicode       4617 Jan 12  2009 man.config
    
    • 查看当前文件夹下文件的数目。在之前的命令上追加管道命令 |wc -l (WordCount -lineNumber)
    hicode@test:~$ ls -l |grep ^- |wc -l  (文件)
    15
    hicode@test:~$ ls -lp |grep ^d |wc -l   (文件夹)
    19
    hicode@test:~$ ls -lp  |wc -l         (全部)
    35                                   15+19 not eq 35 (34.)
    hicode@test:~$ ls -lp |grep ^d |wc -l
    19
    hicode@test:~$ ls -lp |grep ^[^d] |wc -l
    16
    hicode@test:~$ ls -l |grep ^[^d-]       (soga,原来另一行统计项)
    total 1166396              原来另一行
    

    ls 不能显示文件夹树结构,下载tree 就可以。

    sudo apt-get install tree

    usage:tree --help

    非常好用, 和ls一样,默认不输入路径则为当前文件夹

    hicode@test:~/lab$ tree
    .
    ├── a.txt
    ├── b.txt
    ├── c.txt
    ├── dir
    │   ├── 1.md
    │   ├── 2.md
    │   ├── 3.md
    │   ├── 4.md
    │   ├── 5.md
    │   ├── 6.md
    │   └── sadf
    ├── d.txt
    └── e.txt
    
    2 directories, 11 files
    
    • 仅列出当前文件夹全部的隐藏文件
    ls -d .* |grep ^-

    原理:參数.* 为通配符模式,不是正则。

    默认在当前文件夹 下通配。. 也能够是隐藏文件夹的标志。
    证明例如以下

    hicode@test:~$ ls -ld .*|wc -l
    40
    hicode@test:~$ ls -ld .*|grep ^d |wc -l
    26
    hicode@test:~$ ls -ld .*|grep ^- |wc -l
    14
    

    既然使用-d 能够查看文件,那么用-a 加上通配符.* 是否能起到同样的作用呢

    icode@test:~$ ls -la ./.* |wc -l
    309
    

    ???????

    ?????
    測试的时候发现加上a 之后,后面的通配符选择的是文件夹,而不会是文件。它会把全部的.*能匹配上的文件夹都运行一遍。

    也就是说这条命令是非常多条ls -la .aa ,ls -la .. ,ls -la . 等等 命令的集合。加上a 是命令的集合,加上d 却是当前文件夹下条目的集合。

    有点意思。

  • 相关阅读:
    PyCharm配置SFTP远程调试Django应用
    linux安装mysql详细步骤
    一些unity问题的收集
    主程之路
    【英宝通Unity4.0公开课学习 】(六)76讲到90讲
    【英宝通Unity4.0公开课学习 】(五)47讲到75讲
    【英宝通Unity4.0公开课学习 】(四)GUI到物理引擎
    【英宝通Unity4.0公开课学习 】(三)脚本使用
    【英宝通Unity4.0公开课学习 】(二)场景创建
    【英宝通Unity4.0公开课学习 】(一)资源管理
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5154878.html
Copyright © 2020-2023  润新知