如何在 Linux 上使用 ls 命令列出文件和目录如何在 Linux 上使用 ls 命令列出文件和目录如何在 Linux 上使用 ls 命令列出文件和目录如何在 Linux 上使用 ls 命令列出文件和目录
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上使用 ls 命令列出文件和目录

我们每天都在使用 Linux ls 命令,而不去想它。太可惜了。稍微注意一下,您会发现许多有用的选项——包括一些您应该添加到命令行工具库中的选项。

ls 列出文件和目录

ls 命令可能是大多数 Linux 用户遇到的第一个命令。我们这些在命令行闲逛的人日复一日地使用它,甚至都没有想过它。这或许可以解释为什么这个命令比大多数用户意识到的要多。我们用它列出文件以查看目录中的内容。当我们想要查看文件的权限时,我们以长格式列出文件。除此之外,它几乎没有得到考虑。

ls 命令是具有大量选项的命令之一。也许这是问题的一部分。有这么多选项,您如何筛选它们以找到有用的选项?找到它们后,您如何记住它们?

ls 命令及其选项和参数字符串的有用排列是别名的完美候选者。事实上,在大多数发行版中,您认为的“裸”ls 命令实际上是一个别名。除此之外,type 命令可用于显示别名的基本定义。我们看一下 ls 的定义:

输入 ls

每次使用 ls 命令时,都会自动包含 --color=auto 参数。这就是为列表中的不同文件类型提供不同颜色的原因。

简单的 ls 列表

每个用过 Linux 终端一段时间的人都知道,默认情况下,ls 会列出当前目录中的文件和目录。

ls

如果您希望在单列中生成列表,请使用 -1(每行一个文件)选项:

ls -1

稍后我们将讨论列表顶部那个看起来很奇怪的文件名。

在不同的目录上使用 ls

要让 ls 列出当前目录以外的目录中的文件,请在命令行上将目录路径传递给 ls。您还可以将多个目录传递给 ls,并让它们一个接一个地列出。在这里,我们要求 ls 列出两个目录中的文件,一个名为“Help”,另一个名为“gc_help”。

ls Help gc_help

当 ls 列出第一个目录的内容时,它会列出第二个目录的内容。它在处理每个目录时打印它们的名称:

使用文件模式

要有选择地列出一组文件,请使用模式匹配。问号“?”代表任意单个字符,星号“*”代表任意字符串。要列出名称以“ip_”开头的任何文件或目录,请使用以下格式:

ls ip_*

要列出具有“.c”扩展名的文件,请使用以下格式:

ls *.c

您还可以将 ls 与 grep 一起使用,并使用 grep 的模式匹配功能。让我们查找名称中包含字符串“_pin_”的所有文件:

ls | grep _pin_

这几乎与单独使用 ls 相同,但有两个通配符:

ls | grep _pin_
ls *_pin_*

为什么几乎一样?注意不同的布局。 grep 强制输出为每行格式的单个文件名。

非打印字符

您可能会发现自己的文件名中包含非打印字符或控制字符。通常,当您展开从 Web 下载的档案或检索 git 存储库时,可能会发生这种情况,而原作者在创建文件时犯了一个错误,但没有发现它。

我们的奇怪文件是其中之一:

如果我们在文件浏览器中查看它并按“F2”重命名它,非打印字符由一个奇怪的符号表示。

您可以使用 -b(转义)选项来查看文件名实际包含的内容。此选项使 ls 使用 C 编程语言的转义序列来表示控制字符。

ls -b a*

神秘字符显示为换行符,在 C 中表示为“\n”。

忽略文件

要从列表中省略某些文件,请使用 --hide 选项。假设您不想在列表中看到备份“.bak”文件。你可以使用这个命令:

ls
ls --hide=*.bak

“.bak”文件不包含在第二个列表中。

长格式列表

-l(长列表)选项使 ls 提供有关每个文件的详细信息。

ls -l

这里有很多信息,所以让我们逐步了解它。

ls 显示的第一件事是列表中所有文件的总大小。然后每个文件或目录单独显示在一行上。

第一组十个字母和破折号是文件类型和所有者、组和其他文件权限。

第一个字符代表文件类型。它将是以下之一:

  • –:常规文件。
  • b:块特殊文件。
  • c:字符特殊文件。
  • d:一个目录。
  • l:符号链接。
  • n:网络文件。
  • p:命名管道。
  • s:一个插座。

接下来的九个字符是连续显示的三组三个字符。每三个一组按顺序代表读、写和执行权限。如果授予权限,将出现 r、w 或 x。如果未授予权限,则会显示连字符 -。

第一组三个字符是文件所有者的权限。第二组三个权限是给群成员的,最后一组三个权限是给其他人的。

有时,所有者 的执行权限由s 表示。这是 setuid 位。如果存在,则意味着该文件是以文件所有者的权限执行的,而不是以执行该文件的用户的权限执行的。

组 的执行权限也可以是s。这是 setgid 位。当这应用于一个文件时,这意味着该文件将以所有者组的权限执行。当与目录一起使用时,在其中创建的任何文件都将从创建文件的目录获得组权限,而不是从创建文件的用户那里获得。

其他人的执行权限有时可以用t 表示。这是粘性位。它通常应用于目录。如果设置了此项,则无论目录中文件的写权限和可执行权限如何,只有文件所有者、目录所有者或根用户才能重命名或删除目录中的文件。

粘滞位的常见用途是在诸如“/tmp”之类的文件夹上。这对计算机上的所有用户都是可写的。目录上的粘滞位确保用户——以及用户启动的进程——只能重命名或删除他们自己的临时文件。

我们可以在“/tmp”目录中看到粘滞位。请注意 -d(目录)选项的使用。这会导致 ls 报告目录的详细信息。如果没有此选项,ls 将报告目录中的文件。

ls -l -d /tmp

权限后面的数字是文件或目录的硬链接数。对于一个文件,这通常是一个,但是如果创建了其他硬链接,这个数字将会增加。一个目录通常至少有两个硬链接。一个是指向自身的链接,另一个是它在其父目录中的条目。

接下来显示所有者和组的名称。它们后面是文件大小和文件的最后修改日期。最后给出文件名。

人类可读的文件大小

以字节为单位的文件大小并不总是很方便。要以最合适的单位(千字节、兆字节等)查看文件大小,请使用 -h(人类可读)选项:

ls -l -h

显示隐藏文件

要查看隐藏文件,请使用 -a(全部)选项:

ls -l -a

两个条目“.”和“..”分别代表当前目录和父目录。名为“.base_settings”的文件现在第一次可见。

省略。和 .. 来自列表

如果您不希望您的列表被“.”弄得乱七八糟。和“..”条目,但您确实想查看隐藏文件,请使用 -A(几乎所有)选项:

ls -l -A

隐藏文件仍然列出,但“.”和“..”条目被抑制。

递归列出目录

要让 ls 列出所有子目录中的文件,请使用 -R(递归)选项

ls -l -R

ls 遍历起始目录下的整个目录树,并列出每个子目录中的文件。

显示 UID 和 GID

要显示用户 ID 和组 ID 而不是用户名和组名,请使用 -n(数字 uid 和 gid)选项。

ls -n

排序列表

您可以按扩展名、文件大小或修改时间对列表进行排序。这些选项不必与长列表格式一起使用,但这样做通常很有意义。如果您按文件大小排序,在列表中查看文件大小是有意义的。当您按扩展类型排序时,长列表格式并不那么重要。

要按扩展名排序,请使用 -X(按扩展名排序)选项。

ls -X -1

首先列出目录(根本没有扩展名),然后根据扩展名按字母顺序排列其余目录。

要按文件大小排序,请使用 -S(按文件大小排序)选项。

ls -l -h -S

排序顺序是从大到小。

要按修改时间对列表进行排序,请使用 -t(按修改时间排序)选项。

ls -l -t

列表按修改时间排序。

如果文件修改时间在当年,则显示的信息为月、日、时间。如果修改日期不是当年,则显示的信息是月、日和年。

获取目录中最新和最旧文件的快速方法是将 ls 与 head 和 tail 命令一起使用。

要获取最新的文件或目录,请使用以下命令:

ls -t | head -1

要获取最早的文件或目录,请使用以下命令:

ls -t | tail -1

反转排序顺序

要反转任何排序顺序,请使用 -r(反转)选项。

ls -l -h -S -r

列表现在按从最小文件到最大文件的顺序排列。

还有更多

查看 ls 的手册页,还有更多选项。其中一些满足一些模糊的用例,但偶尔,您会很高兴了解它们。

您是否需要查看 Linux 可以提供的最高精度的文件时间戳?使用全职选项:

ls --full-time

也许您想查看文件的 inode 编号?使用 inode 选项:

ls -i

您是否在单色显示器上工作,并希望消除混淆目录和链接文件的所有风险?使用分类选项,ls 会将其中之一附加到每个列表条目:

  • /:目录。
  • @:符号链接。
  • |:命名管道。
  • =:一个插座。
  • *:可执行文件

ls -F

做一些挖掘。你会发现 ls 是一条丰富的脉络,你会不断发现宝石。

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts

©2015-2025 艾丽卡 support@alaica.com