我们的计算机上都有文件——文档、照片、源代码,应有尽有。 这么多。 肯定比我记得的要多。 如果没有挑战性,找到您正在寻找的合适的人可能会很耗时。 在这篇文章中,我们将了解如何在命令行上理解您的文件,尤其是如何快速找到您要查找的文件。
好消息是,Linux 命令行中几乎没有非常有用的实用程序,专门用于在您的计算机上查找文件。 我们将看看其中的三个:ls、tree 和 find。
ls
如果您知道文件在哪里,并且只需要列出它们或查看有关它们的信息,那么 ls 就在这里为您服务。
只需运行 ls 即可列出当前目录中所有可见的文件和目录:
$ ls Documents Music Pictures Videos notes.txt
添加 -l 选项显示有关文件的基本信息。 并与 -H 选项您将看到人类可读格式的文件大小:
$ ls -lh total 60K drwxr-xr-x 2 adam adam 4.0K Nov 2 13:07 Documents drwxr-xr-x 2 adam adam 4.0K Nov 2 13:07 Music drwxr-xr-x 2 adam adam 4.0K Nov 2 13:13 Pictures drwxr-xr-x 2 adam adam 4.0K Nov 2 13:07 Videos -rw-r--r-- 1 adam adam 43K Nov 2 13:12 notes.txt
是 还可以搜索特定地点:
$ ls Pictures/ trees.png wallpaper.png
或者一个特定的文件——即使只是名称的一部分:
$ ls *.txt notes.txt
缺少什么? 寻找隐藏文件? 没问题,使用 -一种 选项:
$ ls -a . .bash_logout .bashrc Documents Pictures notes.txt .. .bash_profile .vimrc Music Videos
还有许多其他有用的选项 ls,您可以将它们组合在一起以实现您所需要的。 通过运行了解它们:
$ man ls
树
如果您想查看文件的树形结构,那么 tree 是一个不错的选择。 默认情况下它可能没有安装,您可以使用包管理器 DNF 自己安装:
$ sudo dnf install tree
不带任何选项或参数的运行树显示从当前目录开始的整个树。 只是一个警告,这个输出可能很大,因为它将包括所有文件和目录:
$ tree . |-- Documents | |-- notes.txt | |-- secret | | `-- christmas-presents.txt | `-- work | |-- project-abc | | |-- README.md | | |-- do-things.sh | | `-- project-notes.txt | `-- status-reports.txt |-- Music |-- Pictures | |-- trees.png | `-- wallpaper.png |-- Videos `-- notes.txt
如果这太多了,我可以使用 -L 选项限制它的级别数,后跟一个指定我想要查看的级别数的数字:
$ tree -L 2 . |-- Documents | |-- notes.txt | |-- secret | `-- work |-- Music |-- Pictures | |-- trees.png | `-- wallpaper.png |-- Videos `-- notes.txt
您还可以显示特定路径的树:
$ tree Documents/work/ Documents/work/ |-- project-abc | |-- README.md | |-- do-things.sh | `-- project-notes.txt `-- status-reports.txt
要浏览和搜索一棵巨大的树,可以与 less 一起使用:
$ tree | less
同样,您可以将其他选项与三个一起使用,您可以将它们组合在一起以获得更大的功率。 手册页包含所有内容:
$ man tree
寻找
那么那些存在于未知世界的文件呢? 让我们找到他们!
如果您的系统上没有 find ,您可以使用 DNF 安装它:
$ sudo dnf install findutils
不带任何选项或参数运行 find 会递归地列出当前目录中的所有文件和目录。
$ find . ./Documents ./Documents/secret ./Documents/secret/christmas-presents.txt ./Documents/notes.txt ./Documents/work ./Documents/work/status-reports.txt ./Documents/work/project-abc ./Documents/work/project-abc/README.md ./Documents/work/project-abc/do-things.sh ./Documents/work/project-abc/project-notes.txt ./.bash_logout ./.bashrc ./Videos ./.bash_profile ./.vimrc ./Pictures ./Pictures/trees.png ./Pictures/wallpaper.png ./notes.txt ./Music
但 find 的真正强大之处在于您可以按名称搜索:
$ find -name do-things.sh ./Documents/work/project-abc/do-things.sh
或者只是名称的一部分——比如文件扩展名。 让我们找到所有 .txt 文件:
$ find -name "*.txt" ./Documents/secret/christmas-presents.txt ./Documents/notes.txt ./Documents/work/status-reports.txt ./Documents/work/project-abc/project-notes.txt ./notes.txt
您还可以按大小查找文件。 如果您的空间不足,这可能特别有用。 让我们列出所有大于 1 MB 的文件:
$ find -size +1M ./Pictures/trees.png ./Pictures/wallpaper.png
也可以搜索特定目录。 假设我想在我的 Documents 目录中找到一个文件,并且我知道它的名称中有“项目”一词:
$ find Documents -name "*project*" Documents/work/project-abc Documents/work/project-abc/project-notes.txt
啊! 这也显示了目录。 我可以做的一件事是将搜索查询限制为仅文件:
$ find Documents -name "*project*" -type f Documents/work/project-abc/project-notes.txt
再说一次,find 还有更多可以使用的选项,手册页肯定会帮助你:
$ man find