Table des matières
Compression
Il peut être intéressant parfois de ne prendre un compte que certains fichiers lors de la création d’une archive zip.
La commande suivante permet de créer un fichier .zip (nommé sources.zip) contenant tous les fichiers ayant l’extension .java de manière récursive à partir du répertoire courant.
$ zip -r sources.zip . -i *.java
Changement d’encodage
Certains OS utilisent par défaut l’encodage de fichier UTF-8 (cas de GNU/linux) alors que d’autres utilisent l’encodage ISO-8859-1 (également appelée Latin-1). Cet encodage différent des caractères pose parfois des problèmes lorsque l’on souhaite réutiliser des fichiers créés sous un autre système.
Pour continuer à manipuler ces fichiers, deux commandes peuvent être utiles: file et iconv.
- La première permet de vérifier l’encodage:
Syntaxe:
file [file_name]Exemple:
$ file liste.txt liste.txt: UTF-8 Unicode HTML document text, with CRLF line terminators - La seconde permet de convertir l’encodage:
Syntaxe:
iconv -f [encoding] -t [encoding] < [source] > [destination]Exemple:
$ iconv -f ISO-8859-1 -t UTF-8 < [source] > [destination] ou $ iconv --from-code=UTF-8 --to-code=ISO-8859-1 < [source] > [destination]
|
Pour convertir l’encodage d’un fichier provenant d’un iSeries (encodage Pour ce genre de fichiers, il est également possible de les convertir à la volée ainsi le contenu de ce dernier sera affiché dans la console. Si vous désirez les éditer par la suite, il faudra rediriger la sortie dans un fichier.
|
| N’utilisez pas le même nom pour la source et la destination au risque de perdre votre fichier! |
Remplacement d’une chaîne
Cette commande remplace toutes les occurences de la chaîne de caractères recherchée dans le fichier par une nouvelle chaîne.
Syntaxe:
perl -pi -e 's/[old_string]/[new_string]/g;' [file_name]
Exemple:
$ perl -pi -e 's/hello/goodbye/g;' monTexte.txt
Une autre solution consiste à utiliser l’éditeur non interactif sed. Cet éditeur permet d’appliquer un certain nombres de commandes sur un fichier puis d’en afficher le résultat sur la sortie standard. Le fichier d’origine n’est de ce fait pas modifié.
Syntaxe:
sed 's/[old_string]/[new_string]/g;' [file_name]
Exemple:
$ sed 's/hello/goodbye/g;' monTexte.txt
Il est néanmoins possible de modifier le contenu du fichier d’origine en ajoutant l’option -i.
La commande ci-après recherche toutes les lignes contenant le mot nombre puis remplace le mot hello par goodbye si ce dernier est présent sur la ligne.
Exemple:
$ sed -i '/nombre/ s/hello/goodbye/g;' monTexte.txt
Changement de CVS
La commande ci-dessous permet de changer le serveur cvs d’un projet.
Syntaxe:
find -name Root | xargs perl -pi -e 's/[old_string]/[new_string]/g'; \
find -name Root.bak | xargs rm
Changement du carriage return
GNU\Linux et Windows n’encode malheureusement pas les fins de ligne de la même manière.
La commande suivante liste tous les fichiers (-type f) du répertoire courant (-maxdepth 1) et remplace tous les caractères de fin de ligne; \r\n (Windows) par \n (GNU\Linux).
Syntaxe:
find . -maxdepth 1 -type f | xargs perl -pi -e 's/\r\n/\n/g'; ls *.bak | xargs rm