Как вы получаете детали из вывода команды locate?

Когда я запускаю команду ls -l, я получаю информацию о файлах в текущем каталоге, таких как разрешения, владелец, группа, размер файла.

Есть ли способ получить эти же данные вместо того, чтобы расположить файл, когда я запускаю locate?

6
задан 29 December 2011 в 00:44

3 ответа

База данных locate не содержит информации, которая содержит другие имена, поэтому вы должны запустить другой инструмент, например ls, на выходе locate

lsloc() {
  locate "$@" | 
    while read -r name; do
      ls -ld "$name"
    done
}
lsloc pattern
5
ответ дан 25 May 2018 в 15:37

Вывести выход из locate в xargs (добавление ls -l в качестве параметров к xargs). Это позволяет использовать любые параметры, необходимые для любой команды. Также, передавая обе команды, -0 (dash-zero), вы также защищаете от непреднамеренных интерпретаций пробелов или новых строк в именах файлов. Например, чтобы получить информацию обо всех файлах .iso в моей системе:

locate -0 -r '.*.iso$' | xargs -0 ls -l
5
ответ дан 25 May 2018 в 15:37

Использовать подоболочку

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

Или

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

Вы можете добавить функцию к ~ / .bashrc, если вы хотите

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

Затем вы

lsloc "search pattern"
3
ответ дан 25 May 2018 в 15:37
  • 1
    Не работает, если результаты содержат пробелы. – enzotib 29 December 2011 в 00:31
  • 2
    Да, но это так, но, как вы знаете, файлы с пробелами сложнее. [F1] – Panther 29 December 2011 в 00:53
  • 3
    Я говорил о выходе локации, а не о шаблоне. – enzotib 29 December 2011 в 01:10
  • 4
    Я понимаю, но, как вы знаете, bash не любит имена файлов с пробелами, а выход locate включает пробелы. Я изменил свой пост, и теперь он работает с файлами с пробелами. – Panther 29 December 2011 в 01:56
  • 5
    Нет, он все равно не работает каждый раз, когда у вас есть несколько результатов. – enzotib 29 December 2011 в 04:29

Другие вопросы по тегам:

Похожие вопросы: