Исключение скрытых файлов в локации
У нас есть 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 "/(\.)+[^/]+$"