Как вы получаете подробности из вывода команды locate?
Когда я бегу ls -l
Команда Я получаю информацию о файлах в текущем каталоге, таких как права доступа, владелец, группа, размер файла.
Есть ли способ получить те же данные, а не только местоположение файла при запуске locate
?
3 ответа
locate
База данных не содержит информации, кроме имен, поэтому вы должны запустить какой-то другой инструмент, например ls
на locate
выход
lsloc() {
locate "$@" |
while read -r name; do
ls -ld "$name"
done
}
lsloc pattern
Труба на выходе locate
в xargs
(добавление ls -l
в качестве параметров для xargs
). Это позволяет вам использовать любые опции, которые вам нужны, с любой командой. Также передавая -0
(тире-ноль) опция для обеих команд, вы также защищаете от непреднамеренного интерпретации пробелов или новых строк в именах файлов. Например, чтобы получить подробную информацию обо всех файлах.iso в моей системе:
locate -0 -r '.*.iso$' | xargs -0 ls -l
Используйте подоболочку
ls -l "`locate -b 'search_pattern'`"
Или же
ls -lh "$(locate -b 'search_pattern')"
Вы можете добавить функцию в ~/.bashrc, если хотите
function lsloc () { ls -l "$(locate -b "$1") ;}
Ты тогда
lsloc "search pattern"