如何在 Linux 中使用“find”命令获取找到的文件的绝对路径?

如何在 Linux 中使用“find”命令获取找到的文件的绝对路径?

我正在检查文件是否存在,find命令如下 -

find ${pwd} | grep 'Test.*zip'

此命令返回带有相对路径的输出,例如 -

./ReleaseKit/Installable/Test-5.2.0.11.zip

有没有办法使用find命令获取找到的文件的绝对路径?

答案1

你的问题

    find ${pwd} | grep 'Test.*zip'

是你没有一个名为 的变量pwd。所以这与 相同find | grep 'Test.*zip'。您想将当前目录作为起点。

要么使用$(pwd)要么$PWD代替${pwd}.$(pwd)运行pwd程序,同时使用其他 POSIX shell 维护$PWD的变量来给出当前目录。bash并非所有 shell 都是 POSIX。您还应该引用变量或命令替换,以防止目录路径中出现异常字符,您最终会得到

    find "$PWD" | grep 'Test.*zip'

答案2

是的,但是你的句子需要更多参数(路径+文件+操作),也许如果你像这样构造你的命令:

$> find {path} -iname {file} -exec {action} \;

使用阅读链接获取绝对路径的命令(在 Linux 和 OS/X 中)

前任。

$> find ./www/project/ -iname 'Test*.zip' -exec readlink -f {} \;
/opt/www/project/Test-5.2.0.11.zip
/opt/www/project/Test-5.2.0.13.zip

答案3

报告的路径名将find始终以在其下找到它的顶级搜索路径开头。因此使用绝对路径作为搜索路径:

find "$PWD" -name 'Test*zip'

PWD变量将保存当前目录的绝对路径名。

如果没有给出搜索路径, GNUfind默认使用当前目录.(“点”)作为搜索路径,这就是您的情况发生的情况,因为您没有名为 的变量pwd。这意味着find检查的所有路径名都以点开头。当未给出搜索路径时,大多数其他实现都会发出错误:

$ unset pwd
$ find $pwd
usage: find [-dHhLXx] [-f path] path ... [expression]

相关内容