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.
"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.
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"
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
Pour vous débarrasser des erreurs d'autorisation (et autres), vous pouvez rediriger stderr vers nulle part.
find / -name "something" 2>/dev/null
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