web-dev-qa-db-fra.com

Exclure les fichiers cachés dans localiser

Nous avons un Ubuntu NAS partageant SMB et Netatalk avec certains Mac et j’utilise souvent locate pour rechercher mes fichiers. Malheureusement, depuis l’installation de Netatalk, il a écrit des tonnes de .AppleDouble fichiers en cache à partager plus rapidement avec AFP (je suppose) et mon locate imprime toutes ces informations. J'utilise constamment cp sur des fichiers uniquement pour constater que j'ai copié un fichier caché inutile lors d'un accident.

J'utilisais locate -i filename | fgrep -v ".AppleDouble" | fgrep -v "._" pour supprimer ces fichiers cachés, mais j'aimerais changer ma bashrc de telle sorte qu'il s'agisse plus ou moins de la valeur par défaut.

Quel est le moyen le plus efficace d’exclure des fichiers cachés de l’impression locale? Avec regex? À l'heure actuelle, j'écrirais un script qui transmet un argument pour localiser et dirige vers grep comme indiqué, mais s'il existe un moyen plus simple, veuillez me le faire savoir.

4
ezgoodnight

Pour exclure les fichiers cachés lors de l'utilisation de Locate, essayez ceci:

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

Si le répertoire contient des fichiers tels que .hidden, ..hidden, ...hiden, ils seront également exclus. Si vous souhaitez uniquement exclure .hidden, supprimez le + de la fin:

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

ou simplement (l'expression rationnelle étendue n'est pas nécessaire aussi):

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

EDIT: Après avoir édité la question, sa signification entière est maintenant différente et ma réponse initiale n’est pas correcte dans le contexte modifié. Exécutez ce qui suit pour exclure tous les fichiers cachés de la sortie de locate (étant donné que le nom du fichier ne contient pas /):

locate -i "file_name" | egrep -v "/(\.)+[^/]+$"
4
heemayl