是否有一种简单的方法可以打印file.txt的完整路径?
file.txt = /nfs/an/disks/jj/home/dir/file.txt
<命令>
dir> <command> file.txt
应该打印
/nfs/an/disks/jj/home/dir/file.txt
是否有一种简单的方法可以打印file.txt的完整路径?
file.txt = /nfs/an/disks/jj/home/dir/file.txt
<命令>
dir> <command> file.txt
应该打印
/nfs/an/disks/jj/home/dir/file.txt
当前回答
适用于Mac, Linux, *nix:
这将为您提供当前目录下所有文件的引用csv:
ls | xargs -I {} echo "$(pwd -P)/{}" | xargs | sed 's/ /","/g'
输出可以很容易地复制到python列表或任何类似的数据结构中。
其他回答
我知道有一个更简单的方法,但如果我能找到它…
jcomeau@intrepid:~$ python -c 'import os; print(os.path.abspath("cat.wav"))'
/home/jcomeau/cat.wav
jcomeau@intrepid:~$ ls $PWD/cat.wav
/home/jcomeau/cat.wav
使用指向:
readlink -f file.txt
另一个Linux实用程序,它做这个工作:
fname <file>
我猜你用的是Linux。
我在coreutils 8.15中找到了一个名为realpath的实用程序。
realpath -s file.txt
/data/ail_data/transformed_binaries/coreutils/test_folder_realpath/file.txt
由于问题是关于如何获取文件的完整/绝对路径,而不是关于如何获取符号链接的目标,请使用-s或——no-symlinks,这意味着不要展开符号链接。
根据@styrofoam-fly和@arch-standton注释,realpath本身并不检查文件是否存在,为了解决这个问题,添加e参数:realpath -e file
下面的方法通常可以达到目的:
echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")"