Linux命令 - ls命令
ls命令是linux下最常用的命令。ls命令就是list的缩写,用来打印出当前目录的清单。如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
1.语法:
ls [选项] [目录或者文件]
2.功能:
列出目录的内容,包括文件和子目录的名称。
3.参数:
-1 每列仅显示一个文件或目录名称。
-a或--all 列出目录下所有文件和目录,包括以 . 开头的隐含文件。
-A或--almost-all 显示所有文件和目录,但不显示现行目录(当前目录)和上层目录(当前目录的父目录)。
-b或--escape 显示脱离字符,即以八进制溢出序列表示不可打印的字符。
-B或--ignore-backups 忽略备份文件和目录,即不列出任何以"~"字符结束的项目。
-c 以更改时间排序,显示文件和目录。
-C 以又上至下,从左到右的直行方式显示文件和目录名称。
-d或--directory 显示目录名称而非其内容。
-D或--dired 用Emacs的模式产生文件和目录列表。
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效。
-F或--classify 在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。
-g 次参数将忽略不予处理,即类似 -l,但不列出所有者。
-G或--no-group 不显示群组名称。
-h或--human-readable 用"K","M","G"来显示文件和目录的大小。
-H或--si 此参数的效果和指定"-h"参数类似,但计算单位是1000Bytes而非1024Bytes。
-i或--inode 显示文件和目录的inode编号。
-I<范本样式>或--ignore=<范本样式> 不显示符合范本样式的文件或目录名称。
-k或--kilobytes 此参数的效果和指定"block-size=1024"参数相同。
-l 使用详细格式列表,除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。ls -l 等于 ll
-L或--dereference 如遇到性质为符号连接的文件或目录,直接列出该连接所指向的原始文件或目录。
-m 用","号区隔每个文件和目录的名称。
-n或--numeric-uid-gid 以用户识别码和群组识别码替代其名称。
-N或--literal 直接列出文件和目录名称,包括控制字符。
-o 此参数的效果和指定"-l" 参数类似,但不列出群组名称或识别码。
-p或--file-type 此参数的效果和指定"-F"参数类似,但不会在执行文件名称后面加上"*"号。
-q或--hide-control-chars 用"?"号取代控制字符,列出文件和目录名称。
-Q或--quote-name 把文件和目录名称以""号标示起来。
-r或--reverse 反向排序。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-s或--size 显示文件和目录的大小,以区块为单位。
-S 用文件和目录的大小排序。
-t 用文件和目录的更改时间排序。
-T<跳格字符>或--tabsize=<跳格字数> 设置跳格字符所对应的空白字符数。
-u 以最后存取时间排序,显示文件和目录。
同-lt 一起使用:按照访问时间排序并显示。
同-l一起使用:显示访问时间并按文件名排序。
其他:按照访问时间排序。
-U 列出文件和目录名称时不予排序,以文件系统原有的次序列出项目。
-v 文件和目录的名称列表以版本进行排序。
-w<每列字符数>或--width=<每列字符数> 设置每列的最大字符数。
-x 以从左到右,由上至下的横列方式显示文件和目录名称。
-X 以文件和目录的最后一个扩展名排序。
--block-size=<区块大小> 指定存放文件的区块大小。
--color=<列表格式> 培植文件和目录的列表格式。
--full-time 列出完整的日期与时间。
--help 在线帮助。
--indicator-style=<标注样式> 在文件和目录等名称后面加上标注,易于辨识该名称所属的类型。
--quoting-syte=<引号样式> 把文件和目录名称以指定的引号样式标示起来。
--show-control-chars 在文件和目录列表时,使用控制字符。
--sort=<排序方式> 配置文件和目录列表的排序方式。
--time=<时间戳记> 用指定的时间戳记取代更改时间。
--version 显示版本信息。
4.显示说明:
每行列出的信息依次是: 文件类型与权限 链接数 文件属主 文件属组 文件大小用byte来表示 建立或最近修改的时间 名字
5.常用范例:
例一: 列出/home/peidachang文件夹下的所有文件和目录的详细资料
命令:ls -l -R /home/peidachang
在使用 ls 命令时要注意命令的格式,在命令提示符后,首先是命令的关键字,接下来是命令参数,在命令参数之前要有一短横线“-”或者两个短横线“–”,所有的命令参数都有特定的作用,自己可以根据需要选用一个或者多个参数,在命令参数的后面是命令的操作对象。比如在以上这条命令“ ls -l -R /home/peidachang”中,“ls” 是命令关键字,“-l -R”是参数,“ /home/peidachang”是命令的操作对象。在这条命令中,使用到了两个参数,分别为“l”和“R”,当然,你也可以把他们放在一起使用,如下所示:
命令:ls -lR /home/peidachang
这种形式和上面的命令形式执行的结果是完全一样的。另外,如果命令的操作对象位于当前目录中,可以直接对操作对象进行操作,ls -l 或者 ll;如果不在当前目录则需要给出操作对象的完整路径,例如上面的例子中,我的当前文件夹是peidachang文件夹,我想对home文件夹下的peidachang文件进行操作,我可以直接输入 ls -lR peidachang,也可以用 ls -lR /home/peidachang。
例二:列出当前目录中所有以“t”开头的目录的详细内容
命令:ls -l t*
可以查看当前目录下文件名以“t”开头的所有文件的信息。其实,在命令格式中,方括号内的内容都是可以省略的,对于命令ls而言,如果省略命令参数和操作对象,直接输入“ ls ”,则将会列出当前工作目录的内容清单。
[root@localhost /]# ls -l t*
总用量 16
-rw-r--r--. 1 root root 1663 5月 12 14:29 anaconda.log
-rw-r--r--. 1 root root 2286 5月 12 14:25 dbus.log
-rwx------. 1 root root 701 5月 12 14:24 ks-script-chn3kk2k
-rw-r--r--. 1 root root 0 5月 12 14:25 packaging.log
-rw-r--r--. 1 root root 131 5月 12 14:25 program.log
-rw-r--r--. 1 root root 0 5月 12 14:25 sensitive-info.log
drwx------. 3 root root 17 5月 12 14:25 systemd-private-c5d0377e4a8d40a884a8a99ea769deed-chronyd.service-qvwwMa
drwx------. 3 root root 17 5月 12 14:29 systemd-private-c5d0377e4a8d40a884a8a99ea769deed-colord.service-EnggMp
drwx------. 3 root root 17 5月 12 14:30 systemd-private-c5d0377e4a8d40a884a8a99ea769deed-fwupd.service-S3ALd4
drwx------. 3 root root 17 5月 12 14:25 systemd-private-c5d0377e4a8d40a884a8a99ea769deed-ModemManager.service-GT8a2G
drwx------. 3 root root 17 5月 12 14:25 systemd-private-c5d0377e4a8d40a884a8a99ea769deed-rtkit-daemon.service-sx5yWE
drwx------. 2 root root 6 5月 12 14:30 tracker-extract-files.0
drwx------. 2 root root 6 5月 12 14:25 vmware-root_922-2722632355
例三:只列出文件下的子目录
命令:ls -F //usr/lib |grep /$
列出 /usr/lib 文件下面的子目录
[root@localhost /]# ls -F /usr/lib |grep /$
alsa/
binfmt.d/
cups/
debug/
dracut/
environment.d/
firewalld/
firmware/
fontconfig/
games/
grub/
kbd/
kdump/
kernel/
locale/
mdadm/
modprobe.d/
modules/
modules-load.d/
mozilla/
NetworkManager/
ostree/
polkit-1/
python3.6/
realmd/
rpm/
sse2/
sysctl.d/
sysimage/
systemd/
sysusers.d/
tmpfiles.d/
tuned/
udev/
命令:ls -l /usr/lib | grep "^d"
列出 /usr/lib 文件下面的子目录详细情况
[root@localhost /]# ls -l /usr/lib | grep "^d"
drwxr-xr-x. 3 root root 18 5月 12 14:18 alsa
drwxr-xr-x. 2 root root 6 9月 2 2020 binfmt.d
drwxr-xr-x. 9 root root 109 5月 12 14:19 cups
drwxr-xr-x. 4 root root 76 5月 12 14:16 debug
drwxr-xr-x. 4 root root 236 5月 12 14:17 dracut
drwxr-xr-x. 2 root root 33 5月 12 14:17 environment.d
drwxr-xr-x. 7 root root 81 5月 12 14:16 firewalld
drwxr-xr-x. 84 root root 12288 5月 12 14:20 firmware
drwxr-xr-x. 3 root root 19 5月 12 14:17 fontconfig
dr-xr-xr-x. 2 root root 6 11月 3 2020 games
drwxr-xr-x. 3 root root 21 5月 12 14:16 grub
drwxr-xr-x. 6 root root 76 5月 12 14:16 kbd
drwxr-xr-x. 2 root root 56 5月 12 14:19 kdump
drwxr-xr-x. 3 root root 23 9月 2 2020 kernel
drwxr-xr-x. 50 root root 4096 5月 12 14:16 locale
drwxr-xr-x. 2 root root 26 5月 12 14:19 mdadm
drwxr-xr-x. 2 root root 95 5月 12 14:17 modprobe.d
drwxr-xr-x. 4 root root 64 5月 12 14:17 modules
drwxr-xr-x. 2 root root 32 5月 12 14:19 modules-load.d
drwxr-xr-x. 4 root root 39 5月 12 14:16 mozilla
drwxr-xr-x. 6 root root 77 5月 12 14:17 NetworkManager
drwxr-xr-x. 2 root root 55 5月 12 14:17 ostree
drwxr-xr-x. 2 root root 50 5月 12 14:17 polkit-1
drwxr-xr-x. 3 root root 27 8月 25 2020 python3.6
drwxr-xr-x. 2 root root 74 5月 12 14:19 realmd
drwxr-xr-x. 5 root root 4096 5月 12 14:18 rpm
dr-xr-xr-x. 2 root root 6 11月 3 2020 sse2
drwxr-xr-x. 2 root root 169 5月 12 14:19 sysctl.d
drwxr-xr-x. 2 root root 6 11月 3 2020 sysimage
drwxr-xr-x. 16 root root 4096 5月 12 14:19 systemd
drwxr-xr-x. 2 root root 81 5月 12 14:19 sysusers.d
drwxr-xr-x. 2 root root 4096 5月 12 14:19 tmpfiles.d
drwxr-xr-x. 16 root root 4096 5月 12 14:19 tuned
drwxr-xr-x. 4 root root 4096 5月 12 14:19 udev
例四:列出目前工作目录下所有名称是s 开头的档案,越新的排最后面
命令:ls -ltr s*
[root@localhost /]# ls -ltr s*
lrwxrwxrwx. 1 root root 8 11月 3 2020 sbin -> usr/sbin
srv:
总用量 0
sys:
总用量 0
drwxr-xr-x. 175 root root 0 5月 12 14:25 module
drwxr-xr-x. 14 root root 0 5月 12 14:25 kernel
drwxr-xr-x. 8 root root 0 5月 12 14:25 fs
drwxr-xr-x. 16 root root 0 5月 12 14:25 devices
drwxr-xr-x. 58 root root 0 5月 12 14:25 class
drwxr-xr-x. 6 root root 0 5月 12 14:25 firmware
drwxr-xr-x. 35 root root 0 5月 12 14:25 bus
drwxr-xr-x. 4 root root 0 5月 12 14:25 dev
drwxr-xr-x. 2 root root 0 5月 12 14:25 block
drwxr-xr-x. 2 root root 0 5月 12 14:25 power
drwxr-xr-x. 2 root root 0 5月 12 14:25 hypervisor
例五:列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档于名称后加"*"
命令:ls -AF
[root@localhost /]# ls -AF
bin@ dev/ home/ lib64@ mnt/ proc/ run/ srv/ tmp/ var/
boot/ etc/ lib@ media/ opt/ root/ sbin@ sys/ usr/
例六:计算当前目录下的文件数和目录数
命令:ls -l * |grep "^-"|wc -l
文件个数
[root@localhost /]# ls -l * |grep "^-"|wc -l
181
命令:ls -l * |grep "^d"|wc -l
目录个数
[root@localhost /]# ls -l * |grep "^d"|wc -l
530
例七: 在ls中列出文件的绝对路径
命令:ls | sed "s:^:
pwd/:"
[root@localhost usr]# ls | sed "s:^:`pwd`/:"
/usr/bin
/usr/games
/usr/include
/usr/lib
/usr/lib64
/usr/libexec
/usr/local
/usr/sbin
/usr/share
/usr/src
/usr/tmp
例八:列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归
命令:find $PWD -maxdepth 1 | xargs ls -ld
[root@localhost usr]# find $PWD -maxdepth 1 | xargs ls -ld
drwxr-xr-x. 12 root root 144 5月 12 14:16 /usr
dr-xr-xr-x. 2 root root 45056 5月 12 14:20 /usr/bin
drwxr-xr-x. 2 root root 6 11月 3 2020 /usr/games
drwxr-xr-x. 4 root root 43 5月 12 14:19 /usr/include
dr-xr-xr-x. 37 root root 4096 5月 12 14:19 /usr/lib
dr-xr-xr-x. 126 root root 81920 5月 12 14:23 /usr/lib64
drwxr-xr-x. 49 root root 12288 5月 12 14:20 /usr/libexec
drwxr-xr-x. 12 root root 131 5月 12 14:16 /usr/local
dr-xr-xr-x. 2 root root 20480 5月 12 14:20 /usr/sbin
drwxr-xr-x. 223 root root 8192 5月 12 14:19 /usr/share
drwxr-xr-x. 4 root root 34 5月 12 14:16 /usr/src
lrwxrwxrwx. 1 root root 10 11月 3 2020 /usr/tmp -> ../var/tmp
例九:递归列出当前目录下的所有文件(包括隐藏文件)的绝对路径
命令: find $PWD | xargs ls -ld
例十:指定文件时间输出格式
命令: ls -tl --time-style=full-iso
[root@localhost usr]# ls -tl --time-style=full-iso
总用量 244
dr-xr-xr-x. 126 root root 81920 2021-05-12 14:23:01.371736631 +0800 lib64
dr-xr-xr-x. 2 root root 45056 2021-05-12 14:20:00.291608936 +0800 bin
dr-xr-xr-x. 2 root root 20480 2021-05-12 14:20:00.270609052 +0800 sbin
drwxr-xr-x. 49 root root 12288 2021-05-12 14:20:00.198609449 +0800 libexec
drwxr-xr-x. 223 root root 8192 2021-05-12 14:19:58.132620848 +0800 share
drwxr-xr-x. 4 root root 43 2021-05-12 14:19:35.774744194 +0800 include
dr-xr-xr-x. 37 root root 4096 2021-05-12 14:19:35.338746599 +0800 lib
drwxr-xr-x. 4 root root 34 2021-05-12 14:16:35.496611746 +0800 src
drwxr-xr-x. 12 root root 131 2021-05-12 14:16:35.359612023 +0800 local
drwxr-xr-x. 2 root root 6 2020-11-03 23:22:25.000000000 +0800 games
lrwxrwxrwx. 1 root root 10 2020-11-03 23:22:25.000000000 +0800 tmp -> ../var/tmp
命令:ls -ctl --time-style=long-iso
[root@localhost usr]# ls -ctl --time-style=long-iso
总用量 244
dr-xr-xr-x. 126 root root 81920 2021-05-12 14:23 lib64
dr-xr-xr-x. 2 root root 45056 2021-05-12 14:20 bin
dr-xr-xr-x. 2 root root 20480 2021-05-12 14:20 sbin
drwxr-xr-x. 49 root root 12288 2021-05-12 14:20 libexec
drwxr-xr-x. 223 root root 8192 2021-05-12 14:19 share
drwxr-xr-x. 4 root root 43 2021-05-12 14:19 include
dr-xr-xr-x. 37 root root 4096 2021-05-12 14:19 lib
drwxr-xr-x. 4 root root 34 2021-05-12 14:16 src
lrwxrwxrwx. 1 root root 10 2021-05-12 14:16 tmp -> ../var/tmp
drwxr-xr-x. 12 root root 131 2021-05-12 14:16 local
drwxr-xr-x. 2 root root 6 2021-05-12 14:16 games
6.扩展:
打开/etc/bashrc, 加入如下一行:
alias ls="ls --color"
下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:
1. 蓝色-->目录
2. 绿色-->可执行文件
3. 红色-->压缩文件
4. 浅蓝色-->链接文件
5. 灰色-->其他文件