GNU/Linux >> Tutoriels Linux >  >> Linux

CD vers un répertoire de nom inconnu dans un chemin connu ?

J'essaie d'automatiser le déploiement d'une application Web en cours de développement qui est fréquemment mise à jour. L'application Web se présente sous la forme d'un fichier zip avec un nom inconnu, et cette structure de répertoire :

unknown_name.zip
  └── unknown_folder_name
     └──all_the_application_files

J'ai besoin d'un script bash pour :

  • supprimer tout le contenu de /var/www/ [done]
  • décompresser l'archive unknown_name.zip, dans un chemin tmp donné [done]
  • cd à l'intérieur de ce chemin tmp connu [done]
  • cd à l'intérieur du unknown_folder_name extrait du unknown_name.zip
  • déplacez tous_les_fichiers_d'application vers /var/www [facile si nous résolvons le point précédent]

Important :à l'intérieur du répertoire tmp, il n'y aura qu'un seul répertoire, celui dans lequel je veux aller. Mon script bash actuel :

rm -r /var/www/*
unzip ./*.zip * -d /home/lese/tmp-deploy
cd /home/lese/tmp-deploy
# HERE I WOULD cd unknown_folder_name
mv * /var/www/

Réponse acceptée :

Solution

Si vous savez avec certitude qu'il y a exactement un répertoire et rien d'autre (aucun autre dossier et aucun autre fichier) dans le répertoire actuel, vous pouvez entrer dans ce répertoire avec

cd *

Si vous savez qu'il n'y a qu'un seul répertoire, mais qu'il peut y avoir des fichiers sans répertoire et sans lien symbolique vers le répertoire dans le répertoire actuel, vous pouvez utiliser

cd */.

pour sélectionner uniquement le répertoire.

Explication

Un seul * est étendu par le shell à une liste de tous les noms de fichiers (qui inclut les sous-répertoires) dans le répertoire courant (à l'exclusion des fichiers cachés, en particulier les répertoires . et .. qui sont toujours là). Si la seule chose dans le répertoire courant est le sous-répertoire à entrer, cela s'étendra à

cd unknown_folder_name

et fais donc ce que tu veux.

L'astuce avec */. est que cela s'étend au "répertoire personnel" (nommé . ) dans n'importe quel sous-répertoire, qui est bien sûr le sous-répertoire lui-même. Étant donné que les noms de fichiers ne peuvent jamais contenir un / , et en supposant qu'il n'y a qu'un seul répertoire, le seul nom auquel il se développe sera unknown_folder_name/. , qui est bien sûr le même répertoire que unknown_folder_name .


Linux
  1. Comment puis-je créer une arborescence de répertoires en C++/Linux ?

  2. Compter le nombre de fichiers dans un répertoire en utilisant C

  3. Créer un nouveau répertoire en C

  4. Puis-je ajouter un raccourci pour remplacer un chemin sous Linux ?

  5. Rsync copie le répertoire actuel avec le nom

Comment ajouter un répertoire à PATH sous Linux

Comment ajouter un répertoire à PATH sous Linux [Astuce rapide]

Chemin absolu ou relatif sous Linux :quelle est la différence ?

Linux :ajouter un répertoire à PATH

Comment trouver un chemin de répertoire partiel ?

Que signifie NT_STATUS_BAD_NETWORK_NAME dans Samba ?