linux命令笔记之ls

it2025-06-23  9

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

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

有点意思。

转载于:https://www.cnblogs.com/bhlsheji/p/5154878.html

最新回复(0)