Безопасный безопасный способ найти файл в FreeBSD?

Para obtener el nombre de usuario más largo (y su longitud):

$ getent passwd | awk -F':' '{ print length($1), $1 }' | sort -rn | head -n 1
11 _traceroute

Es decir, obtenga el archivo passwd, calcule la longitud de cada nombre de usuario (la primera:-cadena delimitada ), ordene por longitud y elija la primera.

Si hay varios nombres de usuario de la misma longitud, se elige el que se ordena en último lugar lexicográficamente.

Para obtener el nombre real más largo (y ver de qué nombre de usuario es el nombre real y la longitud):

$ getent passwd | awk -F':' '{ print length($5), $1, $5 }' | sort -rn | head -n 1
32 _rtadvd IPv6 Router Advertisement Daemon

Esto hace lo mismo que el primer comando, pero calcula la longitud de la quinta:-cadena delimitada en el archivo passwd. Este campo contiene el nombre real del usuario. El resultado es la longitud del nombre real, el nombre de usuario y el nombre real.

En algunos sistemas, un &en el nombre real del usuario será reemplazado por el nombre de usuario cuando ciertas herramientas accedan al campo como fingero sendmail. Por ejemplo, una entrada passwdpuede ser

operator:*:2:5:System &:/operator:/sbin/nologin

Para tener esto en cuenta al calcular la longitud del nombre real:

getent passwd | awk -F':' '{ gsub("&", $1, $5); print length($5), $1, $5 }' | sort -rn | head -n 1

Permitiendo además que awkseleccione el nombre más largo, eliminando sortyhead:

getent passwd |
awk -F':' '
          { gsub("&", $1, $5) ; len = length($5)      }
len > max { line = $0         ; max = len;            }
END       { split(line, a, FS); print max, a[1], a[5] }'

Con este código, se seleccionará el primer nombre más largo encontrado si hay varios nombres de la misma longitud.

3
25.07.2019, 21:12
2 ответа

locate— это простой способ быстрого поиска файла, поскольку он имеет собственную базу данных. Однако я всегда просто используюfind(1). Результаты возвращаются пользователю, запустившему его, и пользователь, запустивший его, может найти только те файлы, на которые у него есть соответствующие разрешения файловой системы.

findвыполняет поиск рекурсивно, поэтому вы можете указать /в качестве пути поиска, если хотите искать во всех файловых системах.

Поиск всех файлов и каталогов с именемfoo:

find / -name "foo"

Поиск только файлов с именемfoo:

find / -type f -name "foo"

Поиск только каталогов с именемfoo:

find / -type d -name "foo"

Много полезных опций. Ознакомьтесь с справочной страницей .

4
27.01.2020, 21:13

run periodic

Как вы уже знаете, командаlocateиспользует базу данных, в которой хранится проиндексированная коллекция имен ваших файлов и папок. Поскольку ваша установка FreeBSD совершенно -новая, эта база данных еще не создана.

Когда будет построена база данных? Когда FreeBSD выполняет свою обычную работу по дому. Существуют пакеты таких работ, которые должны выполняться автоматически ежедневно, еженедельно и ежемесячно. См. команду periodic.

Возможно, вы захотите выполнить эту работу сразу после создания виртуальной машины. Беги:

periodic daily
periodic weekly
periodic monthly

Или запустить все три в одну строку.

periodic daily weekly monthly

По моему опыту, каждое из них занимает около минуты.

➥ В частности, weeklyсоздает/обновляет базу данных locate. Если вы не можете найти что-то, о чем вы знаете, существует, сделайте run periodic weekly.

Если вам интересно, вы можете проверить наличие и размер вашей locateбазы данных до и после запуска periodic. Вероятно, найдено здесь:/var/db/locate.database

Теперь вы сможете успешно использовать команду locate.

3
27.01.2020, 21:13

Теги

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