Исключение скрытых файлов в локации

У нас есть Ubuntu NAS для совместного использования SMB и Netatalk с некоторыми Mac, и я часто использую locate найти мои файлы. К сожалению, после установки Netatalk было написано множество .AppleDouble кешировать файлы, чтобы поделиться с AFP быстрее (я полагаю) и мой locate печатает всю эту информацию. Я постоянно пользуюсь cp на файлы только, чтобы найти, что я скопировал бесполезный скрытый файл случайно.

Я использую locate -i filename | fgrep -v ".AppleDouble" | fgrep -v "._" чтобы удалить эти скрытые файлы, но я хотел бы изменить свой bashrc таким образом, что это более или менее по умолчанию.

Каков наиболее эффективный способ исключить скрытые файлы из того, что распечатывает? С регулярным выражением? Прямо сейчас я написал бы скрипт, который передает аргумент для определения местоположения и передачи в grep, как показано, но если есть более простой способ, пожалуйста, дайте мне знать.

1 ответ

Чтобы исключить скрытые файлы при использовании locate, попробуйте это:

locate -i --regex "^/absolute/path/to/the/directory/[^\.]+"

Если каталог содержит файлы, такие как .hidden, ..hidden, ...hiden они тоже будут исключены. Если вы просто хотите исключить только .hidden, удалить + с конца:

locate -i --regex "^/absolute/path/to/the/directory/[^\.]"

или просто (расширенное регулярное выражение тоже не нужно):

locate -ir "^/absolute/path/to/the/directory/[^\.]"

РЕДАКТИРОВАТЬ: После редактирования вопроса, весь смысл вопроса теперь другой, и мой первоначальный ответ не является правильным в измененном контексте. Выполните следующее, чтобы исключить все скрытые файлы из вывода locate (учитывая, что имя файла не содержит /):

locate -i "file_name" | egrep -v "/(\.)+[^/]+$"
Другие вопросы по тегам