如何从 Linux 终端找到特定文件?
Posted
技术标签:
【中文标题】如何从 Linux 终端找到特定文件?【英文标题】:How can I find a specific file from a Linux terminal? 【发布时间】: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
【参考方案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 个子树深度而不是更多<yourSearchlocation>/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
【讨论】:
以上是关于如何从 Linux 终端找到特定文件?的主要内容,如果未能解决你的问题,请参考以下文章