10.14 Mojave Créer un nom de fichier à parti du dossier le contenant

spl

Membre confirmé
26 Avril 2004
22
1
Bonjour,

je souhaiterais, à l'aide du terminal, renommer automatiquement un fichier avec le nom du dossier le contenant.
Par exemple dans la capture jointe.
L'objectif étant, d'une part donc de renommer les fichiers puis de les déposer sur un serveur dans un même dossier…
J'ai trouvé la manip inverse dans un post (nom de dossier à partir d'un fichier puis fichier à l'intérieur de ce dossier) sous la forme

for i in *.html; do
j=$(basename "$i" .html)
mkdir -v "$j"
mv -v "$i" "$j/$i"
done


Et ça m'a servi pour une partie de ce que je souhaite faire, mais je sais pas le transformer pour faire l'inverse…

Merci !
 

Fichiers joints

  • Capture d’écran 2019-05-29 à 18.51.57.png
    Capture d’écran 2019-05-29 à 18.51.57.png
    361,5 KB · Affichages: 169
A chaque fois il n'y a qu'un seul fichier dans le dossier et il s'agit d'un fichier zip ?
 
A chaque fois il n'y a qu'un seul fichier dans le dossier et il s'agit d'un fichier zip ?
Oui absolument.
Pour résumer le besoin (pour ceux que ça intéresse) :
au départ j'ai XXX fichiers HTML (exo interactifs) dans un seul dossier. Pour les faire jouer sur un LMS, je dois les déposer zipés sur un serveur, le fichier HTML zipé nommé "index.html", le zip nommé avec le nom du fichier source…
Dans un premier temps j'utilise le script ci-dessus avec le terminal, donc tous les fichiers se placent dans un dossier portant le même nom.
Puis avec "A better finder rename", je renomme tous les fichiers en "index.html" à l'intérieur des dossiers
Avec "Keka" je zip tous les fichiers (et non pas le dossier contenant, sinon le html ne fonctionne pas dans le LMS) qui deviennent donc "index.zip".
Reste donc à renommer tous les fichiers index.zip avec le nom du dossier le contenant.
Voilà voilà… Un peu tordu, mais ça marche (enfin sauf la dernière partie pour laquelle je demande humblement de l'aide). Bon si quelqu'un a une meilleure idée, je suis preneur aussi !
Merci.
 
Bonjour,
Pourquoi ne pas zipper directement tes fichiers Html avec keka: (dans préférence de Keka cocher "archiver les fichiers séparément") en les glissant tous, en 1 seule fois, sur keka.
Tu aurais directement tes fichiers zippés avec leurs noms.
 
Bloc de code:
cd *ton répertoire contenant tout  tes autres répertoires*
for file in */*.zip
do
rep_courant=$(dirname $file)
mv $file $rep_courant/$rep_courant.zip
done

Testé chez moi, cela fait la commande suivante au final :
Bloc de code:
mv rep1/file.zip rep1/rep1.zip
mv rep2/file.zip rep2/rep2.zip