Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
tips_informatiques:linux:shell:fichiers_dossiers:fichiers_dossiers [2009/06/22 14:30] nico créée |
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 225: | Ligne 241: | ||
* exclut tous les fichiers, sauf ceux du type *.class | * exclut tous les fichiers, sauf ceux du type *.class | ||
+ | Simuler une mise à jour du balladeur IAUDIO depuis le pc: | ||
+ | <code bash> | ||
+ | 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> | ||
+ | |||
+ | Puis réellement faire la mise à jour: | ||
+ | <code bash> | ||
+ | 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> | ||
+ | //(= 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 319: | 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 352: | 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 431: | 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> | ||
+ |