Когда я запускаю команду 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 (dash-zero), вы также защищаете от непреднамеренных интерпретаций пробелов или новых строк в именах файлов. Например, чтобы получить информацию обо всех файлах .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"