У нас есть совместное использование NAS Ubuntu SMB и Netatalk с некоторыми Mac, и я часто использую locate
найти мои файлы. К сожалению, начиная с установки Netatalk это записало тонны .AppleDouble
файлы кэша для совместного использования с AFP быстрее (я принимаю), и мой locate
печать вся та информация. Я постоянно использую cp
на файлах только для нахождения я скопировал бесполезный скрытый файл на несчастном случае.
Я использовал locate -i filename | fgrep -v ".AppleDouble" | fgrep -v "._"
для удаления тех скрытых файлов но я хотел бы изменить мой bashrc
таким способом, которым это - более или менее значение по умолчанию.
Что самый эффективный путь состоит в том, чтобы исключить скрытые файлы из того, что определяет местоположение печати? С regex? Прямо сейчас я записал бы сценарий, который передает аргумент для определения местоположения и каналы к grep как показано, но если существует более легкий путь, сообщите мне.
Для исключения скрытых файлов при использовании определяют местоположение, пробуют это:
locate -i --regex "^/absolute/path/to/the/directory/[^\.]+"
, Если каталог содержит файлы как .hidden
, ..hidden
, ...hiden
, они будут исключены также. Если Вы просто хотите исключить [только 117], удалите +
из конца:
locate -i --regex "^/absolute/path/to/the/directory/[^\.]"
или просто (расширил regexp, не нужно также):
locate -ir "^/absolute/path/to/the/directory/[^\.]"
РЕДАКТИРОВАНИЕ: После редактирования вопроса, целое значение вопроса отличается теперь, и мой первоначальный ответ не корректен в измененном контексте. Работайте следующее для исключения всех скрытых файлов из Вывода locate
(учитывая имя файла не содержит /
):
locate -i "file_name" | egrep -v "/(\.)+[^/]+$"