16.04 Найдите не находящие файлы в/mnt

Мне настраивали 16,04 установок с моей папкой Downloads, указывающей на вторичный жесткий диск (шоу Downloads -> /mnt/data/Downloads ). Когда я работаю locate для поиска файлов это не показывает файлов на этом диске. Я выполнил a sudo updatedb и я проверяю мой updatedb.conf (ничто, что я вижу, не исключило /mnt каталог или файлы я ищу),

Интересная вещь мне состоит в том когда я cd /mnt/data/Downloads затем выполненный располагаются, я вижу все в этом каталоге, но не на моем основном диске. Это почти похоже на 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: ничто не зашифровало также. Я гуглил вокруг и заметил, что это было проблемой для некоторых пользователей.

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

@: ~ $ определяют местоположение FreeNAS

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

@: ~ $ определяют местоположение *.iso

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

@: ~ $ определяют местоположение ISO

/ размещают//ubuntu-16.04.1-server-amd64.iso

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

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

@: ~ $ находят. - тип f - называют "*.iso"

./ubuntu-16.04.1-server-amd64.iso

Обновление 4: Больше результатов: sudo находят / - тип f - называет "*.iso", дает мне результаты, которые я хочу, но занимает много времени для возвращения с теми результатами.

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

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

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

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

Обновление 6: Таким образом, я имею решение, определяю местоположение "*.iso", но теперь мне любопытно, "почему" это работает. Я посмотрел на Страницу справочника и эти две ссылки: http://www.linfo.org/locate.html и http://www.howtogeek.com/112674/how-to-find-files-and-folders-in-linux-using-the-command-line/. Ни один из них не пролил света на то, почему это работает.

5
задан 9 September 2016 в 11:38

3 ответа

По некоторым причинам,

locate *.iso 

только поиски Ваш текущий каталог для .iso файлов, в то время как

locate "*.iso" 

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

0
ответ дан 23 November 2019 в 10:41

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

locate *.iso

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

locate file1.iso file2.iso

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

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

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

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

1
ответ дан 23 November 2019 в 10:41

Найдите автоматически применяется * прежде и после строки, таким образом, самое легкое решение:

locate .iso

У меня также есть два смонтированные диска Windows. при выполнении locate от раздела Ubuntu я получаю подобные результаты как Ваш вопрос. Используя этот ответ получены корректные результаты:

───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~/Downloads/cfiles$ locate "*.iso" | wc -l
3
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~/Downloads/cfiles$ locate *.iso | wc -l
3
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~/Downloads/cfiles$ locate .iso | wc -l
45
0
ответ дан 23 November 2019 в 10:41

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

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