Excluindo arquivos ocultos no locate

4

Temos um NAS do Ubuntu compartilhando o SMB e o Netatalk com alguns Macs e geralmente uso locate para localizar meus arquivos. Infelizmente, desde a instalação do Netatalk, ele gravou toneladas de arquivos em cache .AppleDouble para compartilhar com o AFP mais rápido (suponho) e meu locate imprime todas essas informações. Estou constantemente usando cp em arquivos apenas para descobrir que copiei um arquivo oculto inútil por acidente.

Eu usei locate -i filename | fgrep -v ".AppleDouble" | fgrep -v "._" para remover esses arquivos ocultos, mas gostaria de alterar meu bashrc de tal forma que isso seja mais ou menos padrão.

Qual é a maneira mais eficaz de excluir arquivos ocultos do que localizar impressões? Com regex? No momento, eu escreveria um script que passasse um argumento para localizar e canalizar para o grep, como mostrado, mas se houver uma maneira mais fácil, por favor me avise.

    
por ezgoodnight 23.02.2015 / 17:23

1 resposta

4

Para excluir arquivos ocultos ao usar o locate, tente isto:

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

Se o diretório contiver arquivos como .hidden , ..hidden , ...hiden , eles também serão excluídos. Se você quiser excluir somente .hidden , remova o + do final:

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

ou simplesmente (a expressão regular prolongada também não é necessária):

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

EDITAR: Depois de editar a pergunta, todo o significado da pergunta é diferente agora e minha resposta inicial não está correta no contexto modificado. Execute o seguinte para excluir todos os arquivos ocultos da saída de locate (dado que o nome do arquivo não contém / ):

locate -i "file_name" | egrep -v "/(\.)+[^/]+$"
    
por heemayl 23.02.2015 / 17:47