如何从locate命令的输出中获取详细信息?

如何从locate命令的输出中获取详细信息?

当我运行ls -l命令时,我会获得有关当前目录中文件的详细信息,例如权限、所有者、组、文件大小。

有什么方法可以在我运行时获取相同的详细信息而不仅仅是文件的位置locate

答案1

数据库locate不包含名称以外的信息,因此您应该lslocate输出上运行其他工具,例如

lsloc() {
  locate "$@" | 
    while read -r name; do
      ls -ld "$name"
    done
}
lsloc pattern

答案2

locate将的输出通过管道传输到xargsls -l作为参数添加到xargs)。这样,您就可以在任一命令中使用所需的任何选项。通过将-0(dash-zero) 选项传递给两个命令,您还可以防止对文件名中的空格或换行符进行意外解释。例如,要获取我系统上所有 .iso 文件的详细信息:

locate -0 -r '.*.iso$' | xargs -0 ls -l

答案3

使用子 shell

ls -l "`locate -b 'search_pattern'`"

或者

ls -lh "$(locate -b 'search_pattern')"

如果你愿意的话,你可以向 ~/.bashrc 添加一个函数

function lsloc () { ls -l "$(locate -b "$1") ;}

然后是你

lsloc "search pattern"

相关内容