您的位置:首页 > 运维架构 > Linux

linux命令笔记之ls

2016-01-24 11:33 218 查看
假设要将全部的命令以一篇博客持续更新的方式去展现,将来在查找的时候非常不方便。出于这种考虑。将来将非常多命令都分开记录。

这里,一些基础使用方法都不做太多说明。主要记录下平时经经常使用到的一些命令。

命令: 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
却是当前文件夹下条目的集合。



有点意思。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: