Как вы получаете подробности из вывода команды 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"
Другие вопросы по тегам