当我运行ls -l
命令时,我会获得有关当前目录中文件的详细信息,例如权限、所有者、组、文件大小。
有什么方法可以在我运行时获取相同的详细信息而不仅仅是文件的位置locate
?
答案1
数据库locate
不包含名称以外的信息,因此您应该ls
在locate
输出上运行其他工具,例如
lsloc() {
locate "$@" |
while read -r name; do
ls -ld "$name"
done
}
lsloc pattern
答案2
locate
将的输出通过管道传输到xargs
(ls -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"