【问题标题】:How can I find a specific file from a Linux terminal?如何从 Linux 终端找到特定文件?
【发布时间】:2011-11-19 13:06:30
【问题描述】:

我正在尝试查找index.html 在我的 linux 服务器上的位置,并且想知道是否有命令可以执行此操作。对 linux 非常陌生,感谢我能得到的任何帮助。

【问题讨论】:

  • man find: unixhelp.ed.ac.uk/CGI/man-cgi?find。这不是立即与编程相关的;试试linux.stackexchange.com
  • 从 / 搜索需要几天时间才能完成。并在搜索时为某些类型的文件吐出一堆(非关键)错误。不是最有效的。
  • 在发布问题之前请做一些最低限度的研究。
  • 几年后,谷歌搜索“在 linux 中查找文件”将其列为前 10 名结果。我很高兴有人提出并回答了这个问题。
  • 你也可以试试 locate

标签: linux debian


【解决方案1】:

从根路径查找find / -name "index.html"

从当前路径查找find . -name "index.html"

【讨论】:

    【解决方案2】:

    下面这行代码会帮你搞定。

    find / -name index.html

    但是,在大多数 Linux 服务器上,您的文件将位于 /var/www 或您的用户目录文件夹 /home/(user) 中,具体取决于您的设置方式。如果您使用的是控制面板,它很可能位于您的用户文件夹下。

    【讨论】:

    • 啊,就像下面所说的那样,find 程序可能需要一段时间才能完成...我不知道还有其他选项...
    【解决方案3】:

    试试这个(通过 shell):

    update db
    locate index.html
    

    或者:

    find /var -iname "index.html"
    

    将 /var 替换为您对它所在目录的最佳猜测,但避免从 / 开始

    【讨论】:

    • 所有其他答案都建议使用find(好吧,这个答案也建议使用find,但仅在locate之后),但是,在使用find几个月后,我意识到locate确实更方便!顺便问一下,update db 是什么?我需要它吗?
    • @shintaroid locate 实际上并不在您的文件系统上搜索给定文件。它的作用是将有关文件的信息缓存到数据库中,该数据库在给定的时间间隔内由作业刷新。所以 updatedb 所做的只是手动更新数据库。
    【解决方案4】:

    解决方案:使用unix命令find

    find 实用程序递归地向下遍历每个路径的目录树 列出,评估一个表达式(由'primaries'和 '操作数')在 树中的每个文件。

    • 您可以通过使用 正则表达式查询、文件类型、大小阈值、深度 子树、组、所有权、时间戳、修改/创建日期等维度。
    • 此外,您还可以使用运算符并组合查找请求,例如 或/不/等...

    传统的公式是:

    find <path> -flag <valueOfFlag>
    

    简单示例

    1.按名称查找 - 从我当前的位置子树层次结构中查找所有package.json

    find . -name "package.json"
    

    2.按名称和类型查找 - 从所有文件系统中查找所有node_modules 目录(从根层次结构开始)

    sudo find / -name "node_modules" -type d
    

    复杂示例:

    更多有用的例子可以展示标志选项和操作符的力量:

    3.正则表达式和文件类型 - 仅在我的应用程序位置查找所有 javascript 控制器变体名称(使用正则表达式)javascript 文件

    find /user/dev/app -name "*contoller-*\.js" -type f
    

    -type f 表示与正则表达式相关的文件-name 与控制器字符串的任何变体以及最后带有.js 的破折号

    4.深度-在应用目录不超过3维(app/../../)中查找所有路由模式目录 .. 只是,没有更深)

    find app -name "*route*" -type d  -maxdepth 3
    

    -type d 表示与正则表达式相关的目录-name 到路由字符串-maxdepth 的任何变体,使查找器专注于3 个子树深度而不是更多&lt;yourSearchlocation&gt;/depth1/depth2/depth3)

    5.文件大小、所有权和 OR 运算符 - 查找 root 用户拥有的所有名称为“sample”或“test”的大于 1 Mega 且小于 5 Mega 的文件。 p>

    find . \( -name "test" -or -name "sample" \)  -user root -size +1M -size -5M
    

    -size 阈值表示大于 (+) 和小于 (-) 之间的范围-user 表示文件所有者-or 运算符过滤查询两个正则表达式匹配

    6.Empty Files - 查找文件系统中的所有空目录

    find / -type d -empty
    

    7.时间访问、修改和创建文件 - 查找10天内在目录中创建/修改/访问的所有文件

    # creation (c)
    find /test -name "*.groovy" -ctime -10d
    # modification (m)
    find /test -name "*.java" -mtime -10d
    # access (a)
    find /test -name "*.js" -atime -10d
    

    8.修改大小过滤器 - 查找在一周前到 3 周前完全修改且小于 500kb 的所有文件,并将其大小显示为列表

    find /test -name "*.java" -mtime -3w -mtime +1w -size -500k | xargs du -h
    

    【讨论】:

      【解决方案5】:

      find /the_path_you_want_to_find -name index.html

      【讨论】:

        【解决方案6】:

        一般来说,在任意位置查找任何文件的最佳方法是启动终端窗口并输入经典的 Unix 命令“find”:

        find / -name index.html -print
        

        由于您要查找的文件是 Web 服务器根目录中的根文件,因此查找 Web 服务器的文档根目录可能更容易。例如,看下:

        /var/www/*

        或输入:

        find /var/www -name index.html -print
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-12-22
          • 2020-07-27
          • 2018-09-09
          • 1970-01-01
          • 1970-01-01
          • 2013-02-12
          • 1970-01-01
          相关资源
          最近更新 更多