如何使用 find unix 命令获取绝对路径

Shi*_*rma 13 find shell-script filenames

如何使用 find 命令获取绝对路径。
实际上我正在运行以下脚本:-

find . -size +20M | while read a
do
     i=$(echo $a | sed 's:/: :g')
     echo $a;
     j=($i)
     fileName=${j[${#j[@]}-1]}
     userName=${j[${#j[@]}-3]}
done
Run Code Online (Sandbox Code Playgroud)

但这里的变量$a显示从 开始的路径,./Downloads/filename但我想要从/.

Kiw*_*iwy 19

将 find 与绝对路径一起使用。

find /path/ -size +20M
Run Code Online (Sandbox Code Playgroud)

它将打印整个路径。
如果您不知道工作目录,则使用命令替换pwd如下:

find "`pwd`" -size +20M 
   #or like this:
find "$(pwd)" -size +20M
Run Code Online (Sandbox Code Playgroud)

获取您的工作目录

无论如何,似乎 Bash man 现在建议使用$()over``所以你应该使用第二种形式。您也可以直接引用$PWD包含脚本工作目录的变量,如果您必须在循环中使用它可能会更快。

find "$PWD" -size +20M
Run Code Online (Sandbox Code Playgroud)

  • 不要以 `.` 开头,而是使用 `$(pwd)`,这会给你一个完整的路径。 (2认同)

Spa*_*ack 9

您可以使用pwd命令或打印出文件realpath

$ find "$(pwd)" -size +20M
$ find . -size +20M -exec realpath {} +
Run Code Online (Sandbox Code Playgroud)

这两个命令都为您提供了文件的绝对路径。