Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
870 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  syntaxe de c-sh à bash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

syntaxe de c-sh à bash

n°2432731
Zik22
Posté le 19-11-2022 à 15:46:03  profilanswer
 

Bonjour
j'ai un script de renommage que j'avais développé sous le C-Shell. Pour une raison contrainte, je suis obligé de le changer en Bourne Shell (bash). Mais je ne connais aucunement l'équivalent des syntaxes sous bsh. Qqn pourrait-il m'aider à le traduire ? Voilà le script "rename.csh" qui ici utilise la fonction sed pour enlever tous les points des fichiers .toto :  

#!/bin/csh
foreach ficname (*.toto)
 mv $ficname `echo $ficname | sed 's/.//'`  
end


Merci d'avance

mood
Publicité
Posté le 19-11-2022 à 15:46:03  profilanswer
 

n°2432734
gilou
Modérateur
Modzilla
Posté le 19-11-2022 à 16:12:01  profilanswer
 

for ficname in *.toto ; do
 mv $ficname `echo "$ficname" | sed 's/.//'`  
done


Message édité par gilou le 19-11-2022 à 16:15:21

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2432735
rat de com​bat
attention rongeur méchant!
Posté le 19-11-2022 à 16:12:45  profilanswer
 

Ca n'aurait pas plus sa place en cat' Linux? Enfin bon, vu que c'est déjà résolu... Bravo à gilou pour sa réactivité. ;)


---------------
matos à vendre
n°2432737
gilou
Modérateur
Modzilla
Posté le 19-11-2022 à 16:19:08  profilanswer
 

J'ai mis $ficname entre "" dans la 2e ligne au cas ou il y aurait des espaces dans le nom de fichier. Pour un echo, ça joue pas, mais ce serait un ls...
Donc autant faire bien dès le départ.
Je re-fais du script depuis un ou deux mois (après l'avoir évité depuis des décennies)
A+,


Message édité par gilou le 19-11-2022 à 16:19:28

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2432739
gilou
Modérateur
Modzilla
Posté le 19-11-2022 à 16:28:07  profilanswer
 

Mais en fait tu fais pas comme ça en bash, mais comme ci :

#!/usr/bin/env bash
for ficname in *.toto ; do
 mv "$ficname" "${ficname//./}"  
done

//./ va faire un remplacement global, si tu veux l'application juste une fois, tu fais /./
bref ${variable//pattern/substitution} ou ${variable/pattern/substitution} selon qu'on veut un remplacement global ou non
(et éventuellement, \mv si tu veux appeler la commande de base et pas un script qui s'y substituerait [très courant pour rm])
A+,


Message édité par gilou le 19-11-2022 à 16:36:49

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2432771
Zik22
Posté le 20-11-2022 à 13:53:32  profilanswer
 

Merci gilou, ton 2nd script marche très bien, même en voulant substituer le point par un espace.  
 
Pour info, en testant le premier script, il remplace le premier caractère des noms par la substitution (donc si c'est un espace, il ne met rien à la place car un espace en début de nom n'est jamais gardé). Je pense qu'il interprète le point comme un meta-caractère (comme en regex), à savoir "point" = "n'importe quel caractère", et il le fait une seule fois, dès qu'il rencontre le caractère en lisant depuis le début du nom = première lettre donc.  
En plus, il n'arrive pas à gérer les fichiers .toto qui ont des espaces en eux (pour cela il faudrait sans doute incorporer avant sed des mises en guillemets avec des exécutions par echo ou autre).
 
Bref, ton 2nd script marche à merveille. Merci !
 
ps : oui, l'admin peut translater le post en "Linux" si nécessaire

n°2432772
Zik22
Posté le 20-11-2022 à 13:57:47  profilanswer
 

ah j'ai pas vu, il y avait bien un echo et des guillemets dans le 1er script   :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  syntaxe de c-sh à bash

 

Sujets relatifs
bash : if imbriquésScript bash/python extraire données bdd
Lire et déplacer un fichier TAR avec nom alternatif bashsyntaxe connexion persistante mysqli PHP7
probleme execution docker-compose en script bash[Python] Erreur de Syntaxe try:
[Shell Bash] Utilisation des semaphores pour paralleliser mon script[BASH] bad substitution sur formatage variable
bash- recherche lignes dans bloc et affichage dans tableaubesoin d'aide Shell/bash svp
Plus de sujets relatifs à : syntaxe de c-sh à bash


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR