如何使用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
但这里变量$a
显示从 开始的路径./Downloads/filename
,但我想要从 开始的绝对路径/
。
答案1
使用带绝对路径的 find。
find /path/ -size +20M
它将打印整个路径。
如果您不知道工作目录,请使用命令替换,如下pwd
所示:
find "`pwd`" -size +20M
#or like this:
find "$(pwd)" -size +20M
获取您的工作目录
不管怎样,看来 Bash man 现在建议使用$()
over``
所以你应该使用第二种形式。您也可以直接引用包含$PWD
脚本工作目录的变量,如果必须在循环中使用,它可能会更快。
find "$PWD" -size +20M
答案2
您可以使用pwd
命令或打印出文件realpath
:
$ find "$(pwd)" -size +20M
$ find . -size +20M -exec realpath {} +
这两个命令都为您提供了文件的绝对路径。
答案3
列出 7 天前的所有 PNG 和 JPEG 文件,并带有绝对路径。
$ find $PWD/ -mtime -7 -print -exec grep -e ".png\|.jpg" {} \;
这里$PWD
将添加到每个匹配的文件中。