GNU/Linux >> Tutoriels Linux >  >> Linux

Trouver le fichier puis cd dans ce répertoire sous Linux

Les éléments suivants devraient être plus sûrs :

cd -- "$(find / -name ls -type f -printf '%h' -quit)"

Avantages :

  • Le double tiret empêche l'interprétation d'un nom de répertoire commençant par un trait d'union en option (find ne produit pas de tels noms de fichiers, mais ce n'est pas dangereux et peut être nécessaire pour des constructions similaires)
  • -name vérifier avant -type vérifier car ce dernier nécessite parfois un stat
  • Non dirname requis car le %h le spécificateur imprime déjà le nom du répertoire
  • -quit pour arrêter la recherche après le premier fichier trouvé, donc pas de head requis, ce qui entraînerait l'échec du script sur les noms de répertoire contenant des retours à la ligne

Vous pouvez utiliser quelque chose comme :

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _

Cela localisera le premier ls fichier normal, puis accédez à ce répertoire.

En termes de ce que fait chaque bit :

  • La recherche commencera à / et recherchez vers le bas, en listant tous les fichiers normaux (-type f ) appelé ls (-name ls ). Il y a d'autres choses que vous pouvez ajouter à find pour restreindre davantage les fichiers que vous obtenez.
  • La tuyauterie à travers head -1 filtrera tous sauf le premier.
  • $() est un moyen de prendre la sortie d'une commande et de la mettre sur la ligne de commande pour une autre commande.
  • dirname peut prendre une spécification de fichier complète et vous donner le bit de chemin.
  • cd passe simplement à ce répertoire.

Si vous exécutez chaque bit dans l'ordre, vous pouvez voir ce qui se passe :

pax[/home/pax]> find / -type f -name ls
/usr/bin/ls

pax[/home/pax]> find / -type f -name ls | head -1
/usr/bin/ls

pax[/home/pax]> dirname "$(find / -type f -name ls | head -1)"
/usr/bin

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"

pax[/usr/bin]> _

Linux
  1. Comment trouver un fichier sous Linux

  2. Comment trouver un fichier sous Linux dans tous les répertoires de manière récursive

  3. Comment trouver le package qui fournit un fichier spécifique sous Linux

  4. Linux – But du répertoire /net ?

  5. Trouver un répertoire dans un terminal Linux

Comment trouver une chaîne dans un fichier sous Linux

Autorisations Linux - Comment trouver les autorisations d'un fichier

Comment trouver des fichiers basés sur l'horodatage sous Linux

Comment trouver la taille totale d'un répertoire sous Linux

Comment trouver la ou les lignes les plus longues dans un fichier sous Linux

La commande Linux find Directory :Explication