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

时间:2014-07-09 13:46:51

标签: linux find ksh locate which

理想情况下,我可以使用像

这样的程序
find [file or directory name]

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

我也尝试过找到哪个,但是没有找到该文件,即使我知道它在某个地方的计算机上。

7 个答案:

答案 0 :(得分:68)

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

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

搜索整个计算机
find / -name "filename"

这也适用于像find / -name "*.pdf"等的东西。有时候我也喜欢将它输入到grep语句中(因为,至少在我的机器上,它会突出显示结果),所以我最终会得到一些东西喜欢

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

执行此操作或类似方法只会帮助我立即找到文件名,并确认它是否实际上是我要查找的文件。

答案 1 :(得分:7)

如果需要在某些目录中找到嵌套:

find / -type f -wholename "*dirname/filename"

或连接dirs:

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

答案 2 :(得分:3)

find命令需要很长时间,搜索文件的最快方法是使用locate命令,该命令在索引数据库中查找文件名(和路径)(通过命令{{更新) 1}})。

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

updatedb

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

此处提供更多详细信息:https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab

答案 3 :(得分:3)

要摆脱权限错误(或类似错误),您可以将stderr重定向到无处

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

答案 4 :(得分:0)

下面的示例将有助于查找当前目录中的特定文件夹。此示例仅搜索当前目录中的当前直接和它将搜索子目录

#!/bin/bash

result=$(ls -d operational)

echo $result

test="operational"

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

答案 5 :(得分:0)

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

which "commandname"

即使您在系统上有许多同名文件,也会显示该命令使用的实际文件。

答案 6 :(得分:0)

我希望此评论可以帮助您使用终端

查找本地和服务器文件路径
 find "$(cd ..; pwd)" -name "filename"

或者只是想查看您的当前位置然后运行

 pwd "filename"