是否有一个命令来检索给定相对路径的绝对路径?
例如,我想要$line包含dir ./etc/中每个文件的绝对路径
find ./ -type f | while read line; do
echo $line
done
是否有一个命令来检索给定相对路径的绝对路径?
例如,我想要$line包含dir ./etc/中每个文件的绝对路径
find ./ -type f | while read line; do
echo $line
done
当前回答
他们说,除了找到$PWD或(在bash中)找到~+更方便一些。
其他回答
欧根的回答对我来说不太管用,但这个却管用:
absolute="$(cd $(dirname \"$file\"); pwd)/$(basename \"$file\")"
旁注,当前工作目录不受影响。
realpath试试。
~ $ sudo apt-get install realpath # may already be installed
~ $ realpath .bashrc
/home/username/.bashrc
要避免扩展符号链接,请使用realpath -s。
答案来自“bash/fish命令打印文件的绝对路径”。
在find的情况下,可能最简单的是给它搜索的绝对路径,例如:
find /etc
find `pwd`/subdir_of_current_dir/ -type f
如果你想将一个包含相对路径的变量转换为绝对路径,这是可行的:
dir=`cd "$dir"`
"cd"在不改变工作目录的情况下被回显,因为它是在子shell中执行的。
我认为这是最便携的:
abspath() {
cd "$(dirname "$1")"
printf "%s/%s\n" "$(pwd)" "$(basename "$1")"
cd "$OLDPWD"
}
但是,如果路径不存在,它将失败。