Когда я запускаю команду ls -l
, я получаю информацию о файлах в текущем каталоге, таких как разрешения, владелец, группа, размер файла.
Есть ли способ получить те же подробности, а не только местоположение файла, когда я запускаю locate
?
База данных 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") ;}
Затем вы [ 117]
lsloc "search pattern"