Quand Windows fait une réparation d'un système de fichier (notamment FAT) on peut y trouver à sa racine un ou plusieurs dossiers FOUND.000 FOUND.001 etc… J'ai alors mis au point une petite syntaxe pour trier les fichiers en fonction du type MIME détecté avec file sous linux :
# Accéder à la racine du volume et copier le dossier en lieu sur (disque interne/externe autre que le disque source) cp -r /media/volume_réparé/FOUND.000 /media/disk/ cd /media/disk/FOUND.000 # Création du dossier de destination pour le tri mkdir RECUP # Récup ASF for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f2); if [[ "$type" = "ASF" ]]; then mv "$file" "./RECUP/${file%.*}.ASF"; echo "$file --> ./RECUP/${file%.*}.ASF"; fi; done # Récup FLV for file in ./*.CHK; do type=$(file -b -i $file | cut -d\; -f1); if [[ "$type" = "video/x-flv" ]]; then mv "$file" "./RECUP/${file%.*}.FLV"; echo "$file --> ./RECUP/${file%.*}.FLV"; fi; done # Récup JPG for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f1); if [[ "$type" = "JPEG" ]]; then mv "$file" "./RECUP/${file%.*}.JPG"; echo "$file --> ./RECUP/${file%.*}.JPG"; fi; done # Récup MP4 for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f3); if [[ "$type" = "MP4" ]]; then mv "$file" "./RECUP/${file%.*}.MP4"; echo "$file --> ./RECUP/${file%.*}.MP4"; fi; done # Récup MS DOC for file in ./*.CHK; do file -b $file | grep "Name of Creating Application: Microsoft Office Word"; if [[ "$?" -eq "0" ]]; then mv "$file" "./RECUP/${file%.*}.DOC"; echo "$file --> ./RECUP/${file%.*}.DOC"; fi; done # Récup MS DOCX for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "Microsoft Word 2007+" ]]; then mv "$file" "./RECUP/${file%.*}.DOCX"; echo "$file --> ./RECUP/${file%.*}.DOCX"; fi; done # Récup MS PPT for file in ./*.CHK; do file -b $file | grep "Name of Creating Application: Microsoft Office PowerPoint"; if [[ "$?" -eq "0" ]]; then mv "$file" "./RECUP/${file%.*}.PPT"; echo "$file --> ./RECUP/${file%.*}.PPT"; fi; done # Récup MS PPTX for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "Microsoft PowerPoint 2007+" ]]; then mv "$file" "./RECUP/${file%.*}.PPTX"; echo "$file --> ./RECUP/${file%.*}.PPTX"; fi; done # Récup MS XLS for file in ./*.CHK; do file -b $file | grep "Name of Creating Application: Microsoft Excel"; if [[ "$?" -eq "0" ]]; then mv "$file" "./RECUP/${file%.*}.XLS"; echo "$file --> ./RECUP/${file%.*}.XLS"; fi; done # Récup MS XLSX for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "Microsoft Excel 2007+" ]]; then mv "$file" "./RECUP/${file%.*}.XLSX"; echo "$file --> ./RECUP/${file%.*}.XLSX"; fi; done # Récup ODP for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "OpenDocument Presentation" ]]; then mv "$file" "./RECUP/${file%.*}.ODP"; echo "$file --> ./RECUP/${file%.*}.ODP"; fi; done # Récup ODS for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "OpenDocument Spreadsheet" ]]; then mv "$file" "./RECUP/${file%.*}.ODS"; echo "$file --> ./RECUP/${file%.*}.ODS"; fi; done # Récup ODT for file in ./*.CHK; do type=$(file -b $file); if [[ "$type" = "OpenDocument Text" ]]; then mv "$file" "./RECUP/${file%.*}.ODT"; echo "$file --> ./RECUP/${file%.*}.ODT"; fi; done # Récup PDF for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f1); if [[ "$type" = "PDF" ]]; then mv "$file" "./RECUP/${file%.*}.PDF"; echo "$file --> ./RECUP/${file%.*}.PDF"; fi; done # Récup ZIP for file in ./*.CHK; do type=$(file -b $file | cut -d\ -f1); if [[ "$type" = "Zip" ]]; then mv "$file" "./RECUP/${file%.*}.ZIP"; echo "$file --> ./RECUP/${file%.*}.ZIP"; fi; done
Find est un petit outil assez puissant qui permet de chercher à peu près tout et n'importe quoi dans votre système ou point de montage.
Avec le commutateur -exec on peut exécuter toutes sortes d'opérations sur les fichiers, les déplacer, les supprimer, les renommer, etc… dans l'exemple ci-dessous on les déplace.
# rechercher tous les fichiers .jpg (dossier courant) find . -name "*.jpg" # rechercher tous les fichiers .jpg dans /usr/bin/ find /usr/bin/ -name "*.jpg" # rechercher tous les fichiers .jpg et .png dans /usr/bin/ find /usr/bin/ \( -name "*.jpg" -o -name "*.png" \) # déplacer tous les fichiers .jpg présents dans /usr/bin dans /media/storage/ find /usr/bin/ -name "*.jpg" -exec mv "{}" /media/storage/ \;
Les droits sous linux fonctionnent selon 2 notions : le propriétaire, et les droits d'accès. Le propriétaire s'exprime sous la forme user:group. Par exemple atelier:users ou root:root. les droits d'accès s'expriment avec un nombre ou avec des lettres, comme ceci : 755 ou rwxr-xr-x. Le 1er chiffre correspond au niveau d'accès de l'utilisateur propriétaire. Le 2nd chiffre correspond au niveau d'accès de du groupe propriétaire. Et le 3eme correspond au niveau d'accès de tous les autres, ou invités. Chaque chiffre a une valeur correspondant à un bête codage binaire des lettres RWX selon le tableau suivant :
R | W | X |
4 | 2 | 1 |
Un niveau d'accès “full”, soit RWX en même temps, correspond donc au chiffre 7.
Définir les droits 755 sur tous les fichiers contenus dans /dossier/test | find /dossier/test -type d -exec chmod 755 {} + |
Définir les droits 755 sur tous les dossiers contenus dans /dossier/test | find /dossier/test -type d -exec chmod 755 {} + |
Définir root:root proprio de tous les fichiers contenus dans /dossier/test | find /dossier/test -type d -exec chown root:root {} + |
Définir root:root proprio de tous les dossiers contenus dans /dossier/test | find /dossier/test -type d -exec chown root:root {} + |
l'option -depth doit être spécifiée en premier et permet de tenir compte de la profondeur de l'arborescence. Cela évite les bugs liés au renommage récursif.
brename est un outil avancé de renommage de masse.
yay -Sy brename
brename -p “\|” -r “-” -R -D
(dans cet exemple je remplace le caractère “|” par “-”) Plusieurs façon de les définir :
date +%T -s "11:14:00" date +%Y%m%d -s "20120418" date -s "19 APR 2012 11:14:00"
Pour synchroniser ponctuellement par NTP (ntpdate)
sudo ntpdate 1.fr.pool.ntp.org
Pour synchroniser l'horloge du bios avec celle du système fraichement mise à jour
sudo hwclock -w
On peut aussi activer le service systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd
sudo mount /dev/sdd2 /media/disk
sudo fdisk -l /dev/sdd
sudo testdisk /dev/sdd
Choisir Intel for MBR or EFI GPT pour les partitions GPT, ensuite Analyse puis Quick Search. La taille apparait dans la colonne Size in sectors.
sudo mount /dev/sdd2 /media/disk -o ro,sizelimit=N
Explorer montages distants | showmount -e 192.168.0.10 |
Cette commande peut servir à extraire les adresses mails de n'importe quel type de ficher (page web, email, fichier texte entre autres)
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
readpst -o ./outlook -r outlook.pst find ./outlook -depth -type d -exec mv {} {}.sbd \; find ./outlook.sbd -name mbox -type f | xargs -d '\n' -I{} echo '“{}” “{}”' | sed -e 's/\.sbd\/mbox“$/”/' | xargs -L 1 mv find ./outlook.sbd -depth -type d -empty -exec rm -r {} \;
Sur Linux quand on vérrouille la majuscule, les touches numériques au dessus des lettres font des lettres accentuées en majuscule. C'est très pratique quand on fait pas mal de bureautique, cela dit dans certains cas cela peut coincer. Un de ces cas est l'utilisation d'une douchette pour les codes barres.
Exemple : j'ai un code barre avec une valeur de 3594794123
Si je scan sur Windows ça donne 3594794123
Si je scan sur Linux ça donne “(Ç'ÈÇ'&É” ce n'est donc pas pratique.
// Replicate a “feature” of MS Windows on AZERTY keyboards // where Caps Lock also acts as a Shift Lock on number keys. // Include keys <AE01> to <AE10> in the FOUR_LEVEL_ALPHABETIC key type.
partial alphanumeric_keys xkb_symbols “basic” {
key <AE01> { type= "FOUR_LEVEL_ALPHABETIC", [ ampersand, 1, bar, exclamdown ] }; key <AE02> { type= "FOUR_LEVEL_ALPHABETIC", [ eacute, 2, at, oneeighth ] }; key <AE03> { type= "FOUR_LEVEL_ALPHABETIC", [ quotedbl, 3, numbersign, sterling ] }; key <AE04> { type= "FOUR_LEVEL_ALPHABETIC", [apostrophe, 4, onequarter, dollar ] }; key <AE05> { type= "FOUR_LEVEL_ALPHABETIC", [ parenleft, 5, onehalf, threeeighths ] }; key <AE06> { type= "FOUR_LEVEL_ALPHABETIC", [ section, 6, asciicircum, fiveeighths ] }; key <AE07> { type= "FOUR_LEVEL_ALPHABETIC", [ egrave, 7, braceleft, seveneighths ] }; key <AE08> { type= "FOUR_LEVEL_ALPHABETIC", [ exclam, 8, bracketleft, trademark ] }; key <AE09> { type= "FOUR_LEVEL_ALPHABETIC", [ ccedilla, 9, braceleft, plusminus ] }; key <AE10> { type= "FOUR_LEVEL_ALPHABETIC", [ agrave, 0, braceright, degree ] };
};
Définir la résolution depuis la ligne de commande avec xrandr.
xset dpms force off
sudo hciconfig hci0 name [new name]
xinput list # Lister les périphériques xinput list-props 16 # Lister les propriétés du périphérique id=16 xinput set-prop 16 297 1 # Mets à "1" (active) la propriété 297 du périphérique 16
tmux new -s [session] # Créer une session tmux a -t [session] # Rejoindre une session tmux a -dt [session] # Rejoindre une session en détachant tous les autres clients
redimentionner à 500px de haut | convert meh.jpg -resize x500 meh-dest.jpg |
redimentionner tous les JPG à 500px de haut | for file in *.jpg; do convert $file -resize x500 dest/$file; done |
Il peut arriver, surtout si vous utilisez un WM (i3 ou Openbox par exemple), que le gestionnaire de trousseau de mot de passe ne se lance pas au lancement du WM. Une petite solution que j'ai trouvé récemment et qui a fonctionné sur mon Archlinux+Openbox, est d'ajouter ceci en tête du ~/.xinitrc :
eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh) export $(gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg) dbus-update-activation-environment --systemd DISPLAY
gnome-keyring doit bien entendu être installé au préalable.