Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux命令行的任何位置找到文件/目录?_Linux_Bash_Find_Ksh_Locate - Fatal编程技术网

如何在linux命令行的任何位置找到文件/目录?

如何在linux命令行的任何位置找到文件/目录?,linux,bash,find,ksh,locate,Linux,Bash,Find,Ksh,Locate,理想情况下,我将能够使用一个程序,如 find [file or directory name] 报告具有匹配文件名/目录的路径。不幸的是,这似乎只检查当前目录,而不是整个文件夹 我还尝试了查找和,但没有人找到该文件,即使我知道它在计算机的某个地方。“不幸的是,这似乎只检查当前目录,而不是整个文件夹”。你大概是说它不在子目录中查找。要解决此问题,请使用find-name“filename” 如果文件不在当前工作目录中,您可以通过 find / -name "filename" 这也适用于fi

理想情况下,我将能够使用一个程序,如

find [file or directory name]
报告具有匹配文件名/目录的路径。不幸的是,这似乎只检查当前目录,而不是整个文件夹

我还尝试了查找和,但没有人找到该文件,即使我知道它在计算机的某个地方。

“不幸的是,这似乎只检查当前目录,而不是整个文件夹”。你大概是说它不在子目录中查找。要解决此问题,请使用
find-name“filename”

如果文件不在当前工作目录中,您可以通过

find / -name "filename"
这也适用于
find/-name“*.pdf”
等内容。有时我也喜欢将其导入到grep语句中(因为,至少在我的机器上,它会突出显示结果),因此我最终会得到如下结果

find / -name "*star*wars*" | grep star

执行此操作或类似的方法可以帮助我立即找到文件名,并识别它是否是我正在查找的文件。

如果需要查找嵌套在某些目录中的文件:

find / -type f -wholename "*dirname/filename"
或连接的目录:

find / -type d -wholename "*foo/bar"

find
命令将花费很长时间,搜索文件的最快方法是使用
locate
命令,它在索引数据库中查找文件名(和路径)(由命令更新
updatedb

结果将立即显示,只需一个简单的命令:

locate {file-name-or-path}
如果找不到该命令,则需要安装
mlocate
软件包并首先运行
updatedb
命令,以便首次准备搜索数据库


此处的更多详细信息:

下面的示例将有助于在当前目录中查找特定文件夹。本例仅搜索当前目录,它将搜索当前目录中可用的子目录

#!/bin/bash

result=$(ls -d operational)

echo $result

test="operational"

if [ "$result" == "$test" ] 
then 
   echo "TRUE"
else
   echo "FALSE"
fi

为了消除权限错误(等等),您可以将stderr重定向到别处

find / -name "something" 2>/dev/null

如果您要查找的是命令文件,最快、最准确的方法是使用

which "commandname"

这将显示用于命令的实际文件,即使系统上有许多同名文件。

我希望此注释将帮助您使用终端查找本地和服务器文件路径

 find "$(cd ..; pwd)" -name "filename"
或者只是想查看当前位置,然后运行

 pwd "filename"

不确定问题是什么,因为
find-name“filename”
在当前工作目录中递归查找文件。很抱歉,如果不清楚,该文件可能不在当前工作目录中。它可能在计算机上的任何地方查找/-name这能回答你的问题吗?谢谢出于好奇,这对部分文件名有效吗?是的,只要使用星号。请注意,它区分大小写。如果我有一个名为STARTUP的文件要查找,
find/-name“*ART*”
会找到它。请注意,
find/-name“*art*”
不会找到该文件,因为“art”是小写,而“STARTUP”是大写case@johncorser你也应该能够使用某种形式的RE来找到你需要知道的东西!我不知道我可以用正则表达式来查找!速度惊人地慢。我在EC2上有一台scratch linux机器,它一分钟内找不到文件。我使用了查找和定位解决方案,我可以确认定位要快得多。嗯?我不明白你什么时候会用到这个,或者它与原来的问题有什么关系。OP写道他已经尝试了
哪个
,但对他不起作用。我们如何在一个find命令中同时使用文件和目录?我正在尝试类似于“find/-maxdepth 1-typed,f”这样的东西,但我在命令行上收到一条消息:“find:Arguments to-type应该只包含一个字母”谢谢,这实际上回答了“如何找到可能在任何地方的文件”的问题。对于像我这样不了解标准文件夹结构、不想键入三百个
cd
命令来查找文件、不想搜索数百个被拒绝权限的行的linux Noob来说,这是一个完美的答案。对于我的具体情况,我试图在SQLServerLinux中找到sqlcmd工具