如何在复制文件时获取副本的绝对路径?

时间:2017-06-08 08:12:44

标签: bash

我这样复制:

cp "$input_file_absolut_path" "$output_directory_absolut_path"

现在我想对复制的文件做些什么,但我只能这样做:

copy_absolut_path="$output_directory_absolut_path/$input_file_absolut_path"

获取复制文件的绝对路径的任何提示?

3 个答案:

答案 0 :(得分:1)

不,你必须使用$input_file_absolut_path。但由于您只复制了文件而不是整个目录结构到$output_directory_absolut_path,所以你必须这样做:

copy_absolut_path="$output_directory_absolut_path/$(basename $input_file_absolut_path)"

basename将为您提供没有目录结构的文件名。然后将它与output_directory_absolut_path连接起来。

答案 1 :(得分:0)

如果您的文件名不包含斜杠,则可以连接$output_directory_absolut_pathbasename "$input_file_absolut_path"

答案 2 :(得分:0)

解决方案

copy_absolute_path="$(cd "$output_directory_absolute_path"; pwd)/${input_file_absolute_path##*/}"

解释

如果output_directory_absolute_path/结尾,则$(cd "$output_directory_absolute_path"; pwd)将返回不带尾随/的路径。

$(input_file_absolute_path##*/}返回上一个/之后的所有内容。