web-dev-qa-db-fra.com

Comment puis-je trouver un fichier/répertoire qui pourrait être n'importe où sur la ligne de commande linux?

Idéalement, je pourrais utiliser un programme comme 

find [file or directory name]

pour signaler les chemins avec les noms de fichiers/répertoires correspondants. Malheureusement, cela ne semble vérifier que le répertoire actuel, pas le dossier entier.

J'ai aussi essayé de localiser et de trouver le fichier, mais aucun ne l'a trouvé, même si je le connais quelque part sur l'ordinateur.

42
johncorser

"Malheureusement, cela ne semble vérifier que le répertoire actuel, pas le dossier entier". Vous voulez probablement dire que cela ne figure pas dans les sous-répertoires. Pour résoudre ce problème, utilisez find -name "filename"

Si le fichier en question ne se trouve pas dans le répertoire de travail en cours, vous pouvez rechercher votre machine entière via 

find / -name "filename"

Cela fonctionne également avec des éléments tels que find / -name "*.pdf", etc. Parfois, j'aime aussi transposer cette information dans une instruction grep (car, du moins sur ma machine, elle met en évidence les résultats), de sorte que 

find / -name "*star*wars*" | grep star

Faire ceci ou une méthode similaire m'aide à trouver instantanément le nom de fichier et à reconnaître s'il s'agit bien du fichier que je cherche.

59
Russell Uhl

Si besoin de trouver imbriqué dans certains répertoires:

find / -type f -wholename "*dirname/filename"

Ou répertoires connectés:

find / -type d -wholename "*foo/bar"
6
Andrey

La commande find prend du temps. Le moyen le plus rapide de rechercher un fichier est d'utiliser la commande locate, qui recherche les noms de fichiers (et le chemin d'accès) dans une base de données indexée (mise à jour par la commande updatedb).

Le résultat apparaîtra immédiatement avec une simple commande:

locate {file-name-or-path}

Si la commande est introuvable, vous devez d'abord installer le package mlocate et exécuter la commande updatedb pour préparer la base de données de recherche pour la première fois.

Plus de détails ici: https://medium.com/@thucnc/the-fastest-way-toffind-files-by-filename-mlocate-locate-commands-55bf40b297ab

3
thucnguyen

Pour vous débarrasser des erreurs d'autorisation (et autres), vous pouvez rediriger stderr vers nulle part.

find / -name "something" 2>/dev/null
2
user52028778

L'exemple ci-dessous vous aidera à trouver le dossier spécifique dans le répertoire actuel. Cet exemple ne recherche que le courant actuel et le sous-répertoire disponible dans le répertoire courant.

#!/bin/bash

result=$(ls -d operational)

echo $result

test="operational"

if [ "$result" == "$test" ] 
then 
   echo "TRUE"
else
   echo "FALSE"
fi
0