Linux命令行快速技巧之定位一个文件的方法

 更新时间:2018年11月21日 10:50:35   作者:Adam Šamalík  
Linux 命令行专门设计了很多非常有用的命令行工具在你的电脑上查找文件。下面我们看一下它们其中三个:ls、tree 和 find。 感兴趣的朋友跟随小编一起看看吧

我们都会有文件存储在电脑里 —— 目录、相片、源代码等等。它们是如此之多。也无疑超出了我的记忆范围。要是毫无目标,找到正确的那一个可能会很费时间。在这篇文章里我们来看一下如何在命令行里找到需要的文件,特别是快速找到你想要的那一个。

好消息是 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 也可以搜索一个指定位置:

$ ls Pictures/
trees.png wallpaper.png

或者一个指定文件 —— 即便只跟着名字的一部分:

$ ls *.txt
notes.txt

少了点什么?想要查看一个隐藏文件?没问题,使用 -a 选项:

$ ls -a
. .bash_logout .bashrc Documents Pictures notes.txt
.. .bash_profile .vimrc Music Videos

ls 还有很多其他有用的选项,你可以把它们组合在一起获得你想要的效果。可以使用以下命令了解更多:

$ man ls

tree

如果你想查看你的文件的树状结构,tree 是一个不错的选择。可能你的系统上没有默认安装它,你可以使用包管理 DNF 手动安装:

$ sudo dnf install tree

如果不带任何选项或者参数地运行 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

如果使用 tree 列出的是一个很大的树状图,你可以把它跟 less 组合使用:

$ tree | less

再一次,tree 有很多其他的选项可以使用,你可以把他们组合在一起发挥更强大的作用。man 手册页有所有这些选项:

$ man tree

find

那么如果不知道文件在哪里呢?就让我们来找到它们吧!

要是你的系统中没有 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 文件夹下找一个文件,而且我知道它的名字里有 “project” 这个词:

$ 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 手册页绝对可以帮到你:

$ man find
via: https://fedoramagazine.org/commandline-quick-tips-locate-file/

总结

以上所述是小编给大家介绍的Linux命令行快速技巧之定位一个文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 在 Ubuntu Linux 上安装 Oracle Java 14的方法

    在 Ubuntu Linux 上安装 Oracle Java 14的方法

    最近,Oracle 宣布 Java 14(或 Oracle JDK 14)公开可用。如果你想进行最新的实验或者开发的话,那么你可以试试在 Linux 系统上安装 Java 14,感兴趣的朋友可以参考下本文
    2020-04-04
  • 阿里云服务器ping不通解决办法(云服务器搭建完环境访问不了ip解决办法)

    阿里云服务器ping不通解决办法(云服务器搭建完环境访问不了ip解决办法)

    这篇文章主要介绍了阿里云服务器ping不通解决办法(云服务器搭建完环境访问不了ip解决办法),文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2007-05-05
  • 详解CentOS 7下安装Tomcat到服务

    详解CentOS 7下安装Tomcat到服务

    本篇文章主要介绍了CentOS 7下安装Tomcat到服务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 浅谈Linux下修改/设置环境变量JAVA_HOME的方法

    浅谈Linux下修改/设置环境变量JAVA_HOME的方法

    这篇文章主要介绍了浅谈Linux下修改/设置环境变量JAVA_HOME的方法,环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。感兴趣的可以了解一下
    2020-07-07
  • Linux下sftp登录失败的解决方案

    Linux下sftp登录失败的解决方案

    这篇文章主要介绍了Linux下sftp登录失败的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 阿里云Centos6.X发邮件遇到的各种问题

    阿里云Centos6.X发邮件遇到的各种问题

    这两天用PHPMailer写了个发送邮件功能,在本地测试可以发送邮件,但是放到阿里云服务器缺发送不了,经过查询,最终解决了,把方法分享给大家
    2018-09-09
  • Linux常用查看硬件设备信息命令大全(值得收藏)

    Linux常用查看硬件设备信息命令大全(值得收藏)

    本文是小编收藏整理的关于linux查看硬件设备信息的命名,非常不错,值得收藏,需要的朋友参考下吧
    2016-12-12
  • apache2.2和php5.2.17在windows下整合过程的错误解决方法

    apache2.2和php5.2.17在windows下整合过程的错误解决方法

    照理来说apache和php的整合应该是非常简单的,apache下载windows安装版本后一路next即可完成安装,php下载解压版本后直接解压到指定目录,然后在apache的配置文件httpd.conf的最后加入如下几行即可
    2011-08-08
  • Apache Rewrite实现URL的301跳转和域名跳转

    Apache Rewrite实现URL的301跳转和域名跳转

    Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式
    2012-05-05
  • linux如何扩展磁盘容量(VMware虚拟机)

    linux如何扩展磁盘容量(VMware虚拟机)

    这篇文章主要介绍了linux如何扩展磁盘容量(VMware虚拟机)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09

最新评论