16.04 Найдите не поиск файлов в / mnt

4

У меня установлена ​​установка 16.04 с папкой «Мои загрузки», указывающей на дополнительный жесткий диск (показывает Downloads -> /mnt/data/Downloads ). Когда я запускаю locate для поиска файлов, на нем нет файлов. Я запустил sudo updatedb , и я проверяю свой updatedb.conf (ничего, что я вижу, исключает каталог /mnt или файлы, которые я ищу)

Интересная вещь для меня - это когда я cd /mnt/data/Downloads , затем запустил locate . Я могу видеть все в этом каталоге, но не на моем основном диске. Это похоже на то, что Ubuntu имеет две разные базы данных локаций, в зависимости от того, на каком диске я нахожусь.

Как я могу исправить эту ситуацию?

Дополнительно : вот мой updatedb.conf

PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /var/lib/schroot"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"

Я попытался запустить sudo locate , и это не изменило результаты. Я попытался запустить mlocate и sudo mlocate , и это тоже не изменило результаты.

Я также попытался найти еще один файл updatedb.conf и подошел пустой.

Обновление 1: Файловая система на вторичном диске - ext4.

Обновление 2: Ничего не зашифровано. Я искал Google и заметил, что это проблема для некоторых пользователей.

Обновление 3: Теперь я больше смущен. Я пытаюсь найти все файлы .iso на своей машине, ниже приведены результаты:

@: ~ $ найти FreeNAS

/mnt/data/Downloads/FreeNAS-9.3-RELEASE.iso

@: ~ $ найти * .iso

/home/hudsona/ubuntu-16.04.1-server-amd64.iso

@: ~ $ найти iso

/home//ubuntu-16.04.1-server-amd64.iso

/mnt/data/Downloads/FreeNAS-9.3-RELEASE.iso

(и множество других результатов)

@: ~ $ find. -type f -name "* .iso"

./ убунт-16.04.1-сервер amd64.iso

Обновление 4: Другие результаты: sudo find / -type f -name "* .iso" дает мне результаты, которые я хочу, но занимает много времени, чтобы вернуться с этими результатами.

Я хотел копаться и видеть, действительно ли у меня есть две разные базы данных, так как я получаю разные результаты локации на основе того, на каком диске я нахожусь. После проверки страницы MAN я искал файл mlocate.db в своей системе, вот мои результаты:

  • /usr/share/man/man5/mlocate.db.5.gz
  • /var/lib/mlocate/mlocate.db
  • /var/lib/mlocate/mlocate.db.VEzhqO

Я думал, что файл .VEzhqO может быть вторичной базой данных, поэтому я попытался указать это с помощью флага -d для команды locate. Это дало мне ошибку «не могу поставить». Тайна продолжается.

Обновление 5: Я воспроизвел это на другой машине Ubuntu, версии сервера 16.04.

Обновление 6: Итак, у меня есть решение, найдите «* .iso», но теперь мне любопытно «почему» это работает. Я просмотрел страницу MAN и эти две ссылки: Ссылка и

задан Winski Tech 07.09.2016 в 16:47
источник

2 ответа

0

По какой-то причине

  

найдите * .iso

выполняет поиск только текущего каталога для файлов .iso, а

  

найдите "* .iso"

выполняет поиск всех ваших дисков. Это решение моей проблемы.

    
ответ дан Winski Tech 12.09.2016 в 16:05
0

Во всех оболочках использование *.iso расширяется до списка файлов перед вызовом команды, поэтому в

locate *.iso

оболочка автоматически расширяет выражение, создающее список имен файлов из файлов в текущем каталоге. Предположим, что там, где в текущем каталоге два файла iso file1.iso и file2.iso ; результирующая команда будет фактически:

locate file1.iso file2.iso

, то оболочка выполнит его. Таким образом, locate попытается найти файлы, содержащие эти две строки, эффективно ищет "*file1.iso*" или "*file2.iso*" .

Вот почему locate iso находят больше файлов, чем locate *.iso ; locate фактически ищет "*iso*" в первом случае. Решение (и правильный способ его использования, IMHO) цитирует специальные символы оболочки, когда команда принимает выражения, используя их, например, следующую команду find :

find /etc/ -type f -iname "*.conf"

Если там, где есть два или более файлов conf в текущем каталоге, и мы не используем кавычки, команда find не будет обрабатывать второе имя файла, и наша плотность волос будет сильно уменьшена в отчаянии и googling; D, потому что сообщение об ошибке, похоже, не связано с отсутствием кавычек.

    
ответ дан Fjor 22.04.2017 в 09:53