J'ai préparé un script bash pour obtenir seulement le répertoire (pas le chemin complet) avec le nom du fichier où le fichier est présent. Cela doit être fait seulement quand le fichier est situé dans le sous-répertoire. Par exemple: si l'entrée est src/email/${sub_dir}/Bank_Casefeed.email
, la sortie doit être ${sub_dir}/Bank_Casefeed.email
.Récupère le répertoire courant (pas le chemin complet) avec le nom de fichier uniquement quand le sous-dossier est présent dans Linux bash
Si l'entrée est src/layouts/Bank_Casefeed.layout
, la sortie doit être Bank_Casefeed.layout
. Je peux facilement obtenir ceci en utilisant la commande basename
.
src/basefolder est toujours constant. Dans certains cas (après le répertoire src/email (basefolder)), sub_directories sera là.
Ce script fonctionnera. Je peux utiliser ce script (seulement si le module est e-mail) pour obtenir la sortie. mais le script devrait fonctionner même si le sous-répertoire est présent dans d'autres modules. Peut-être devrais-je compter les répertoires? s'il y a plus de deux répertoires (src/basefolder), le script devrait avoir des sous-répertoires. Y a-t-il une meilleure façon de gérer les deux scénarios?
#!/bin/bash
filename=`basename src/email/${sub_dir}/Bank_Casefeed.email`
echo "filename is $filename"
fulldir=`dirname src/email/${sub_dir}/Bank_Casefeed.email`
dir=`basename $fulldir`
echo "subdirectory name: $dir"
echo "concatenate $filename $dir"
Entity=$dir/$filename
echo $Entity
Merci glenn. sub_dir peut être n'importe quoi. Les fichiers sont créés pendant l'exécution par un autre script. Le nom sub_dir ne peut donc pas être défini dans ce script. Juste une liste de fichiers dans le fichier texte. Y a-t-il un moyen de gérer cela? – Ela
Je ne comprends pas comment ce commentaire correspond à votre question. Est-ce que cela aide: http://mywiki.wooledge.org/BashFAQ/001 –