readlink -f 不适用于多个文件

readlink -f 不适用于多个文件

我尝试readlink -f使用 来运行多个文件wildcard "*",但它将其他文件评估为操作数

命令

readlink -f *log

输出(所需)

/home/trail_1.log
/home/trail_2.log

难道我做错了什么 ?我正在使用tcsh并且readlink是我知道的唯一命令来读取文件路径。

答案1

您还可以使用realpath

% realpath *
/data/code/mdweb/Gemfile
/data/code/mdweb/Gemfile.lock
/data/code/mdweb/README.markdown

realpath不是 POSIX。它在 FreeBSD 系统上默认可用,并且一些(但不是全部)Linux 系统(但 AFAIK 可以作为软件包安装在大多数(如果不是全部)Linux 系统上)。
realpath的行为可能因实现而异,因此上述行为是不保证工作。我已经在 FreeBSD 10 和 Arch Linux 上测试过它。

答案2

readlink仅适用于一个文件,您需要一个循环来执行此操作:

for f in *; do
  readlink -f -- "$f"
done

相关内容