Мне настраивали 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 файл в своей системе, вот мои результаты:
Я думал возможный.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/. Ни один из них не пролил света на то, почему это работает.
По некоторым причинам,
locate *.iso
только поиски Ваш текущий каталог для .iso файлов, в то время как
locate "*.iso"
поиски все Ваши диски. Это - решение моей проблемы все же.
Во всех оболочках, с помощью *.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, потому что сообщение об ошибке кажется не связанным с отсутствием кавычек.
Найдите автоматически применяется *
прежде и после строки, таким образом, самое легкое решение:
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