comment changer l'extension de plusieurs fichiers à l'aide de script bash?
Je suis très nouveau avec linux, l'utilisation peut-être que c'est ma première fois donc j'espère que certains détails à l'aide s'il vous plaît.
J'ai plus de 500 fichiers dans plusieurs répertoires sur mon serveur (Linux) je veux changer leurs extensions .xml à l'aide de script bash
J'ai utilisé un grand nombre de codes mais aucun d'eux ne fonctionne quelques codes que j'ai utilisé :
for file in *.txt
do
mv ${file} ${file/.txt}/.xml
done
ou
for file in *.*
do
mv ${file} ${file/.*}/.xml
done
je ne sais pas, même si le second est un code valide ou pas j'ai essayé de changer l'extension txt car l'invite a dit aucun fichier '.txt'
Je l'espère, une bonne aide pour que je vous remercie
OriginalL'auteur unique_programmer | 2013-04-05
Vous devez vous connecter pour publier un commentaire.
Explication
>=4
et pour permettre**
(c'est à direglobstar
) ;.txt
, qui doivent être ancrés à la fin du nom du fichier (%
) :#
le motif ancres (plaine mot ou glob) au début,%
ancres à la fin..xml
Code
Cela devrait le faire dans
Bash
(note que je neecho
l'ancien/nouveau nom de fichier, renommer les fichiers, utilisezmv
au lieu deecho
) :1. vous avez sous-répertoires ? 2. Ce type d'extension de fichier si vous remplacez-la uniquement .txt ou autres ?
je veux changer toutes les extension des fichiers dans un répertoire(qui a des sous-répertoires), mais la plupart d'entre eux sont .txt
- Je ajouter/améliorer les **, globstar qui travail recursivly.
merci, je vais mettre à jour. Pour info le point-virgule n'est pas obligatoire dans le script, seulement si vous faites un one-liner.
OriginalL'auteur Édouard Lopez
Si c'est une question d'un ou deux sous-répertoires, vous pouvez utiliser la commande renommer:
Cela permettra de renommer tous les .txt pour .des fichiers xml dans le répertoire à partir duquel la commande est exécutée.
rename
"renommer(1) pourrait être l'un des trois ou quatre programmes différents-ou vous pourriez ne pas avoir il sur votre système. Une boucle ou trouver une expression qui utilise mv est plus sûr."Pour plus de détails, voir: "Comment puis-je renommer tous mes *.foo fichiers *.bar, ou convertir les espaces par des traits de soulignement, ou de les convertir en majuscules les noms de fichiers en minuscules?" mywiki.wooledge.org/BashFAQ/030
OriginalL'auteur Guru
Si tous les fichiers sont dans le même répertoire, il peut être fait à l'aide d'une seule commande. Par exemple, vous voulez convertir tous les jpg en fichiers png, allez à l'emplacement du répertoire, puis utiliser la commande
renommer .jpg .png *
OriginalL'auteur Amol Manthalkar
J'ai voulu renommer "file.txt" "file.jpg.txt", utilisé renommer facile peezy:
renommer 's/.txt$/.jpg.txt/' *.txt
homme renommer vous dira tout ce que vous devez savoir.
Obtenu d'aimer Linux, il y a un outil pour tout 🙂
OriginalL'auteur user2971380
passant argument de ligne de commande pour dir chemin
ls
, il est cassé pour les noms de fichier contenant des espaces...OriginalL'auteur siz