ls 显示工作目录内容

作用

ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容,列出目前工作目录所含的文件及子目录。

语法

ls [-alrtAFR] [name...]

参数

  • -a  显示所有文件及目录 (. 开头的隐藏文件也会列出)

  • -d  只列出目录(不递归列出目录内的文件)

  • -l  以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等

  • -r  倒序显示文件和目录

  • -t  将按照修改时间排序,最新的文件在最前面

  • -A  同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)

  • -F  在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"

  • -R  递归显示目录中的所有文件和子目录

下面列举了 ls 命令参数的常见组合:

ls -l  # 以长格式显示当前目录中的文件和目录
ls -a  # 显示当前目录中的所有文件和目录,包括隐藏文件
ls -lh  # 以人类可读的方式显示当前目录中的文件和目录大小
ls -t  # 按照修改时间排序显示当前目录中的文件和目录
ls -R  # 递归显示当前目录中的所有文件和子目录
ls -l /etc/passwd  # 显示/etc/passwd文件的详细信息

示例

(1)列出根目录(\)下的所有目录:

hxstrive@localhost:~$ ls /
bin   dev  home  lib    lib64   media  opt   root  sbin  srv  tmp  var
boot  etc  init  lib32  libx32  mnt    proc  run   snap  sys  usr
hxstrive@localhost:~$ ls -lR /bin
lrwxrwxrwx 1 root root 7 Oct 26  2022 /bin -> usr/bin

(2)将 /bin 目录以下所有目录及文件详细资料列出:

hxstrive@localhost:~$ ls -lR /bin
lrwxrwxrwx 1 root root 7  3月 13  2022 /bin -> usr/bin

(3)当文件名包含空格、特殊字符或者开始字符为破折号时,可以使用反斜杠(\)进行转义,或者使用引号将文件名括起来。例如:

ls "my file.txt"    # 列出文件名为"my file.txt"的文件
ls my\ file.txt     # 列出文件名为"my file.txt"的文件
ls -- -filename     # 列出文件名为"-filename"的文件

(4)ls 命令还可以使用通配符进行模式匹配,例如 * 表示匹配任意字符,? 表示匹配一个字符,[...] 表示匹配指定范围内的字符。例如:

ls *.txt         # 列出所有扩展名为.txt的文件
ls file?.txt     # 列出文件名为file?.txt的文件,其中?表示任意一个字符
ls [abc]*.txt    # 列出以a、b或c开头、扩展名为.txt的文件

(5)列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面:

ls -ltr s*

(6)在使用 ls -l 命令时,第一列的字符串表示文件或目录的类型和权限。其中第一个字符表示文件类型,例如:

hxstrive@localhost:~$ ls -l
total 56
-rw------- 1 hxstrive hxstrive  355  6月  7 12:26 DEADJOE
drwxr-xr-x 2 hxstrive hxstrive 4096  6月  8 08:57 Desktop
drwxr-xr-x 2 hxstrive hxstrive 4096  3月 13  2022 Documents
drwxr-xr-x 3 hxstrive hxstrive 4096  4月 24 16:29 Downloads
drwxr-xr-x 2 hxstrive hxstrive 4096  3月 13  2022 Music
...

以 Desktop 目录信息为例,其中:

第一列:文件类型和访问权限,例如:drwxr-xr-x

    首位字母表示:文件类型(d),- 表示普通文件、d 表示目录、l 表示符号链接、c 表示字符设备文件、b 表示块设备文件、s 表示套接字文件、p 表示管道文件

    二至四字母表示:表示所有者权限(rwx),- 表示没有对应全向、r-读取权限、w-写入权限、x-执行权限

    五至七字母表示:表示组用户权限(r-x)

    八至十字母表示:表示其他用户组的权限(r-x)

第二列:文件硬链接数或目录子目录数,如:2。因为 Desktop 是目录所以数字显示为 2。对于普通文件:表示链接数,每个新建的文件默认为 1。对于目录:表示第一级子目录数,对于空目录,默认为 2,因为每一个目录都有一个指向它本身的子目录 "." 和指向它上级目录的子目录 "…",这两个默认子目录是隐藏的,需要用 ls -a 查看。

第三列: 文件拥有者,如:hxstrive,表示文件的拥有者为 hxstrive。

第四列: 文件拥有者所在组,如:hxstrive,表示所在组也是 hxstrive。

第五列: 文件大小,如:4096,表示大小为 4096字节。文件大小单位为字节,若为一个目录,则表示目录本身的大小,不包括该目录下的文件和子目录。

第六列: 文件修改时间的月份,如:6月,表示修改月份为6月。

第七列: 文件修改时间的日期,如:8,表示日期是8日。

第八列:文件修改时间的小时和分钟,如:08:57,表示修改文件的具体时间为 8:57。

第九列: 文件名,如:Desktop,表示文件名为 Desktop。

更多关于命令详细参考手册,请使用 man 命令或者 --help 参数获取帮助信息

关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号