Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
tips_informatiques:linux:shell:fichiers_dossiers:fichiers_dossiers [2009/07/08 14:59] nico |
tips_informatiques:linux:shell:fichiers_dossiers:fichiers_dossiers [2013/09/20 15:52] (Version actuelle) nico |
||
|---|---|---|---|
| Ligne 43: | Ligne 43: | ||
| </code> | </code> | ||
| - | Incluant les sous répertoires et n'affichant que les fichiers contenant le terme "DatabaseAuthenticatorAction": | + | Incluant les sous répertoires et n'affichant que les fichiers contenant le terme "monTexte": |
| <code bash> | <code bash> | ||
| Ligne 61: | Ligne 61: | ||
| </code> | </code> | ||
| + | Trouver les fichiers créés/modifiés depuis 20 jours: | ||
| + | <code bash> | ||
| + | for i in {0..20}; do find . -ctime $i -type f; done | ||
| + | </code> | ||
| ====== Rechercher un terme dans un fichier ====== | ====== Rechercher un terme dans un fichier ====== | ||
| Ligne 86: | Ligne 90: | ||
| </code> | </code> | ||
| + | __grep récursif sous Unix / Solaris__ | ||
| + | |||
| + | <code bash> | ||
| + | find . -type f -print | xargs grep monTexte | ||
| + | </code> | ||
| Ligne 206: | Ligne 215: | ||
| x = extract, z = gzip, j = bzip2 | x = extract, z = gzip, j = bzip2 | ||
| + | __Sous Solaris:__ | ||
| + | |||
| + | Décompresser une archive tar.gz: | ||
| + | |||
| + | <code bash> | ||
| + | gtar -zxf nom_du_fichier.tar.gz | ||
| + | </code> | ||
| ====== Synchroniser du contenu entre deux dossiers ====== | ====== Synchroniser du contenu entre deux dossiers ====== | ||
| Ligne 227: | Ligne 243: | ||
| Simuler une mise à jour du balladeur IAUDIO depuis le pc: | Simuler une mise à jour du balladeur IAUDIO depuis le pc: | ||
| <code bash> | <code bash> | ||
| - | rsync -rvtun /home/rodn/Musique/MUSIC/ /media/IAUDIO/MUSIC/ | + | rsync -rvtun --modify-window=1 /home/rodn/Musique/MUSIC/ /media/IAUDIO/MUSIC/ |
| + | rsync -rvtun --modify-window=1 /media/IAUDIO/MUSIC/ /home/rodn/Musique/MUSIC/ | ||
| </code> | </code> | ||
| Puis réellement faire la mise à jour: | Puis réellement faire la mise à jour: | ||
| <code bash> | <code bash> | ||
| - | rsync -rvtu /home/rodn/Musique/MUSIC/ /media/IAUDIO/MUSIC/ | + | rsync -rvtu --modify-window=1 /home/rodn/Musique/MUSIC/ /media/IAUDIO/MUSIC/ |
| + | rsync -rvtu --modify-window=1 /media/IAUDIO/MUSIC/ /home/rodn/Musique/MUSIC/ | ||
| </code> | </code> | ||
| //(= sans l'option n)// | //(= sans l'option n)// | ||
| + | |||
| + | //l'option --modify-window=1 permet de détecter les différence de temps des fichiers de manière moins précise (defaut = 0), ce qui permet de gérer certains problèmes entre les différents systèmes de fichier// | ||
| + | |||
| + | |||
| + | Faire ensuite de même en inversant les chemins (balladeur --> pc) | ||
| + | |||
| + | __Copier un dossier contenant des liens symboliques__ | ||
| + | |||
| + | utiliser l'option **-a** qui copie le dossier en temps qu'archive | ||
| + | |||
| + | <code bash> | ||
| + | rsync -avz /path/to/folder1 /path/to/folder2 | ||
| + | </code> | ||
| + | |||
| + | __Problème de l'heure d'été/hiver:__ | ||
| + | |||
| + | En fonction du type de filesystem, il peut arriver que certains disques montrent des différences d'une heure entre des fichiers synchronisés après un passage à l'heure d'hiver/d'été. Dans ce cas, la synchronisation en fonction du temps ne peut plus se faire. | ||
| + | |||
| + | Une manière de régler le problème est de mettre à jour les heures des fichiers en utilisant le script suivant: | ||
| + | |||
| + | <code perl> | ||
| + | #!/usr/bin/perl | ||
| + | use strict; | ||
| + | |||
| + | my $offset = shift() + 0; | ||
| + | die "Usage: $0 OFFSET_SECONDS\n" unless $offset; | ||
| + | |||
| + | while (<>) { | ||
| + | chomp; | ||
| + | my $mtime = (stat $_)[9]; | ||
| + | next unless $mtime; | ||
| + | $mtime += $offset; | ||
| + | utime $mtime, $mtime, $_; | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | qui se lance de cette manière: | ||
| + | |||
| + | <code bash> | ||
| + | find . -type f ! -newer /tmp/cmpfile | shifttime.pl 3600 | ||
| + | </code> | ||
| + | |||
| + | A noter que la mise à jour du temps peut être faite dans l'autre sens avec -3600 | ||
| ====== Monter une clé USB ====== | ====== Monter une clé USB ====== | ||
| Ligne 329: | Ligne 390: | ||
| $uudecode to_decode.txt | $uudecode to_decode.txt | ||
| $less to_decode.txt | $less to_decode.txt | ||
| + | </code> | ||
| + | |||
| + | |||
| + | __Solution alternative en Python:__ | ||
| + | |||
| + | <code bash> | ||
| + | python -c "print __import__('base64').b64decode('c2FsdXQ=')" | ||
| </code> | </code> | ||
| Ligne 362: | Ligne 430: | ||
| iconv -f ISO8859-1 -t UTF-8 $i > temp.tmp && cat temp.tmp > $i && rm temp.tmp | iconv -f ISO8859-1 -t UTF-8 $i > temp.tmp && cat temp.tmp > $i && rm temp.tmp | ||
| done | done | ||
| + | </code> | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== Repérer les caractères non ASCII dans un fichier ====== | ||
| + | |||
| + | __OS:__ Linux | ||
| + | |||
| + | __Problème:__ | ||
| + | |||
| + | Comment repérer dans un fichier les caractères qui ne sont pas des caractères ASCII ? | ||
| + | |||
| + | __Solution:__ | ||
| + | |||
| + | En utilisant une option de //cat//: | ||
| + | |||
| + | <code bash> | ||
| + | cat -v my_file.txt | grep "M-" | ||
| + | </code> | ||
| + | |||
| + | |||
| + | |||
| + | ====== Remplacer des caractères UTF-8 affichés en ISO-8859-1 dans un fichier ====== | ||
| + | |||
| + | __OS:__ Linux | ||
| + | |||
| + | __Problème:__ | ||
| + | |||
| + | Comment remplacer des caractères UTF-8 affichés en ISO-8859-1 dans un fichier ? | ||
| + | |||
| + | C'est à dire comment retrouver les caractères accentués dans un fichier contenant des caractères tels que à , é, è et autres ê ? | ||
| + | |||
| + | __Solution:__ | ||
| + | |||
| + | En utilisant le script suivant: | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | #two chars to replace | ||
| + | sed -i 's/Ã /à/g' $1 # this one may be confused with a word ending by í | ||
| + | sed -i 's/á/á/g' $1 | ||
| + | sed -i 's/â/â/g' $1 | ||
| + | sed -i 's/ä/ä/g' $1 | ||
| + | sed -i 's/ã/ã/g' $1 | ||
| + | sed -i 's/é/é/g' $1 | ||
| + | sed -i 's/è/è/g' $1 | ||
| + | sed -i 's/ê/ê/g' $1 | ||
| + | sed -i 's/ë/ë/g' $1 | ||
| + | sed -i 's/ẽ/ẽ/g' $1 | ||
| + | sed -i 's/ì/ì/g' $1 | ||
| + | sed -i 's/î/î/g' $1 | ||
| + | sed -i 's/ï/ï/g' $1 | ||
| + | sed -i 's/Ä©/ã/g' $1 | ||
| + | sed -i 's/ò/ò/g' $1 | ||
| + | sed -i 's/ó/ó/g' $1 | ||
| + | sed -i 's/ô/ô/g' $1 | ||
| + | sed -i 's/ö/ö/g' $1 | ||
| + | sed -i 's/õ/õ/g' $1 | ||
| + | sed -i 's/ù/ù/g' $1 | ||
| + | sed -i 's/ú/ú/g' $1 | ||
| + | sed -i 's/û/û/g' $1 | ||
| + | sed -i 's/ü/ü/g' $1 | ||
| + | sed -i 's/Å©/ũ/g' $1 | ||
| + | |||
| + | #one char to replace | ||
| + | sed -i 's/Ã/í/g' $1 | ||
| </code> | </code> | ||
| Ligne 441: | Ligne 577: | ||
| </code> | </code> | ||
| et faire "Shift + f" | et faire "Shift + f" | ||
| + | |||
| + | Autre solution pour surveiller plusieurs fichiers dans le même terminal, installer le programme //multitail//: | ||
| + | |||
| + | <code bash> | ||
| + | ~$ multitail /path/to/file1 /path/to/file2 | ||
| + | </code> | ||
| + | |||
| + | |||
| + | ====== Indenter un fichier XML ====== | ||
| + | |||
| + | __OS:__ Linux | ||
| + | |||
| + | __Problème:__ | ||
| + | |||
| + | Comment indenter correctement un fichier XML mal formaté ? | ||
| + | |||
| + | __Commande:__ | ||
| + | |||
| + | <code bash> | ||
| + | ~$ xmlindent -w bad_formatted_file.xml | ||
| + | </code> | ||
| + | |||
| + | |||
| + | ====== Remplacer les tabulations par des espaces dans un fichier ====== | ||
| + | __OS:__ Linux | ||
| + | |||
| + | __Problème:__ | ||
| + | |||
| + | Comment remplacer l'ensemble des tabulations par 4 espaces dans un fichier ? | ||
| + | |||
| + | __Commande:__ | ||
| + | |||
| + | <code bash> | ||
| + | ~$ expand -t 4 my_file.txt > _tmp_ && mv _tmp_ my_file.txt | ||
| + | </code> | ||
| + | |||
| + | et de manière récursive: | ||
| + | |||
| + | <code bash> | ||
| + | ~$ find . ! -type d ! -name _tmp_ -exec sh -c 'expand -t 4 {} > _tmp_ && mv _tmp_ {}' \; | ||
| + | </code> | ||
| + | |||