我有一个使用Suse Linux 10.3的VPS。

我已经通过SSH / putty登录,并试图找到我的Web文件所在的位置。

因为我在通过FTP在名为httpdocs的目录中上载,我认为该目录存在于某个地方。

我的Google搜索教我这样做,请转到我的根目录并键入:

find httpdocs -type d

,但显示“没有这样的文件或目录”。

如何找到此目录?

评论

如果有人想知道,问题中的命令会在目录条目httpdocs中找到所有目录(类型d)(相对于当前工作目录,通常但不一定是目录)。它失败并显示错误消息,因为系统的根目录中没有目录条目httpdocs,因此没有搜索起点。

#1 楼

它是:

find / -type d -name 'httpdocs'


第一个参数“ /”是要查找的位置,在这种情况下,“ /”是整个系统。

-name可以是-iname以忽略大小写

-type不是必需的

use:man查找更多选项

评论


对于简单的搜索而言可能并不重要,但是对于更复杂的find命令而言,值得注意的是,事物是按照它们在命令行中的顺序进行评估的。因此,您可能希望在-name之前使用-type d(仅目录),以加快处理速度。同样,在这里这可能无关紧要,但是在进行更复杂的搜索时,它可以大大提高搜索速度。

–多米尼克·艾德森(Dominic Eidson)
09年6月28日在19:00

实际上,-name测试比大多数其他测试更快,因为-name与已经从磁盘加载的目录列表匹配,并且其他测试需要执行stat(2)来获取文件信息。在第一个stat()调用文件之后,随后的测试从内存中获取,例如:-type f -mtime -10。

–Arcege
2011-12-30 12:53

如果要在整个文件系统(尤其是服务器)上执行查找,那么通常最好使用nice,这样查找不会占用更多关键过程中的太多资源:nice find / ...

–Arcege
2011-12-30 12:54

我会附加2> / dev / null以避免我的搜索结果隐藏在所有权限错误中。

–杨Ja雄
13年8月21日在6:48

我喜欢伊娜美。

–neverMind9
19年7月4日在14:47

#2 楼

此命令可以为您提供所需的信息:

find / -type d -name httpdocs


,它将从服务器的根目录中搜索名称为httpdocs的目录,或者如果您只是想在当前目录中搜索,用'。'替换'/'。

您可以尝试的另一条命令是找到您要执行的操作:

locate httpdocs


评论


定位httpdocs告诉我“定位:找不到命令”

–爱德华·唐格(Edward Tanguay)
09年6月28日在18:36

对于那些使用“ locate”命令(假定系统中已存在)的用户,请确保其查找的数据库是最新的。通常,一些cron工作会处理它。否则,请运行“ updatedb”(是root)。然后运行所需的“查找”。这对于查找最近添加的文件/目录是必需的。

–大卫·拉米雷斯(David Ramirez)
2012年11月2日23:23

+1查找。它要快很多,但前提是它的索引是最新的。幸运的是,像“ httpdocs”这样的东西不会经常更改位置。如果您打算重复搜索机器上的文件,那么值得花费几分钟来设置updated cron作业。

–道格·哈里斯(Doug Harris)
13年3月25日在18:57

同样在很多情况下,locate将返回太多结果,因为该目录中的所有100k文件都会显示。在这种特殊情况下,如果每个用户都有自己的带有100或1000个文件的httpdocs,则OP想要的结果可能会丢失。

–菊苣
14年7月16日在12:46

+1定位...我保持数据库更新,因此此命令非常有用...好主意。

–nicorellius
2014年8月25日23:01

#3 楼

find / -type d -name httpdocs 2> /dev/null


这将消除不以root用户身份执行操作时可能会(总是读取)的所有错误消息。建议这样做。

评论


2> / dev / null选项非常有用。否则很难看到想要的结果...

– Gottlieb Notschnabel
14年2月14日在18:59

另请参阅如何从“查找”中排除所有“拒绝权限”消息?

–加拉特
17 Mar 10 '17 at 10:06



#4 楼

重要的是要知道参数-iname来搜索“不区分大小写”模式和通配符的使用:* 、?等。

两个示例:

搜索所有文件从/ root包含字符串“ Linux”,不区分大小写:

find  /root -type f -iname "*linux*"


从/ root中搜索所有包含字符串“ Linux”,不区分大小写的目录:

find  /root -type d -iname "*linux*"


从这里提取:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con -find.html

评论


这个问题是关于如何找到一个您知道名字的目录,而不是关于如何找到一个您知道名字的目录(大约)。此外,可接受的答案(来自6年前!)已经提到-iname是-name的不区分大小写的替代方案。

– G-Man说“恢复莫妮卡”
2015年12月7日,下午5:23

#5 楼

你几乎拥有它。正确的语法为:

find / -type d -name httpdocs


目录可能在/var/www/

评论


告诉我“路径必须在表达之前”

–爱德华·唐格(Edward Tanguay)
09年6月28日在18:12