J'utilise la commande find pour rechercher dans des structures de répertoires volumineuses et imbriquées.
Dans le résultat, la sortie contient parfois une double barre oblique (//).
Exemple (après "Téléchargements"):
#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf
J'ai d'abord pensé que cela marquerait le répertoire de travail actuel. Mais ce n'est pas le cas.
Quelle est la signification de cette double barre oblique?
Habituellement, je copie le résultat dans le presse-papiers, passe au Finder. Puis "shift" + "command" + "g" et collez le chemin (jusqu'au fichier) dans la boite. Pour que le répertoire contenant soit ouvert.
Fonctionne bien. Mais la double barre oblique que je dois supprimer manuellement.
Par conséquent: comment puis-je l'éviter?
Réponses:
find
est plutôt littéral. Lorsque vous lui demandez de rechercher dans "~ / Téléchargements /", il utilise cela (y compris la barre oblique de fin) comme préfixe pour tout ce qu'il trouve. Puisqu'il y a une barre oblique inutile et non pertinente à la fin du chemin que vous lui avez donné, vous vous retrouvez avec une barre oblique supplémentaire inutile et non pertinente dans la sortie.Solution: supprimez le "/" de fin du répertoire de recherche:
la source
Signifie que vous utilisez une ancienne découverte BSD étrange.
Vous pouvez en effet omettre la barre oblique de fin dans votre commande d'origine, mais comme elle est ajoutée automatiquement via la complétion de tabulation (que vous devriez certainement utiliser le plus possible), et puisque la barre oblique de fin est en fait utilisée dans une myriade d'endroits ailleurs pour être sûr que vous avons affaire à un répertoire et non à un nom de fichier, l'omettre est contre-intuitif et idiot.
Au lieu de cela, je suggère de faire l'une de ces autres choses:
a) Faire un wrapper pour trouver que les tuyaux à séduire: | sed 's @ // @ / @'
b) Installez GNU findutils avec 'brew install findutils' puis utilisez directement 'gfind', alias 'find' à 'gfind', ou ajoutez / usr / local / opt / findutils / libexec / gnubin à votre chemin (qui ajoute également GNU findutils '' Locate '', 'Updatedb', & 'Xargs').
c) Basculez vers un système d'exploitation GNU / Linux approprié qui n'aurait pas eu ce problème (et mille autres) en premier lieu. : p
la source
set mark-directories off
à votre.inputrc
et vous êtes prêt à partir. De l'un de ces vieux gars BSD.