==== Trier des fichiers rapidement par extention ==== Déplace des fichiers en vrac dans un dossier en fonction de leur extension : #!/bin/sh cd ~/Downloads pwd ## Image echo "+ moving images" find . -maxdepth 1 -type f \ -name "*jpg" -o -name "*JPG" \ -o -name "*jpeg" -o -name "*JPEG" \ -o -name "*png" -o -name "*PNG" \ | xargs -I '{}' mv {} images ## Document echo "+ moving documents" find . -maxdepth 1 -type f \ -name "*pdf" -o -name "*PDF" \ -o -name "*.doc" -o -name "*.DOC" \ -o -name "*.docx" -o -name "*.DOCX" \ -o -name "*.ppt" -o -name "*.PPT" \ -o -name "*.pptx" -o -name "*.PPTX" \ -o -name "*.xls" -o -name "*.XLS" \ -o -name "*.xlsx" -o -name "*.XLSX" \ -o -name "*odt" -o -name "*ODT" \ -o -name "*ods" -o -name "*ODS" \ -o -name "*odp" -o -name "*ODP" \ | xargs -I '{}' mv {} documents ## CAO echo "+ moving CAO files" find . -maxdepth 1 -type f \ -name "*stl" -o -name "*STL" \ -o -name "*dwg" -o -name "*DWG" \ -o -name "*dxf" -o -name "*DXF" \ | xargs -I '{}' mv {} CAO ## Vidéo echo "+ moving videos" find . -maxdepth 1 -type f \ -name "*mov" -o -name "*MOV" \ -o -name "*mp4" -o -name "*MP4" \ -o -name "*avi" -o -name "*AVI" \ -o -name "*mkv" -o -name "*MKV" \ | xargs -I '{}' mv {} videos ## Div execs / data / archives echo "+ moving the rest" find . -maxdepth 1 -type f \ -name "*txt" -o -name "*TXT" \ -o -name "*iso" -o -name "*ISO" \ -o -name "*csv" -o -name "*CSV" \ -o -name "*ics" -o -name "*ICS" \ -o -name "*sh" -o -name "*SH" \ -o -name "*py" -o -name "*PY" \ -o -name "*exe" -o -name "*EXE" \ -o -name "*AppImage" \ -o -name "*msi" -o -name "*MSI" \ -o -name "*deb" -o -name "*DEB" \ -o -name "*rpm" -o -name "*RPM" \ -o -name "*zip" -o -name "*ZIP" \ -o -name "*rar" -o -name "*RAR" \ -o -name "*.tar" -o -name "*.TAR" \ | xargs -I '{}' mv {} div-data-exe-archives ## remove ext echo "- removing exts" rm *.ext 2>/dev/null ## End information echo "" echo "unsorted files" ls -al | grep '^-' | wc -l echo "" echo "Size on disk " du -sh echo "" echo "done" ==== copier en conservant l'arborescence ==== [[https://ostechnix.com/copy-specific-file-types-while-keeping-directory-structure-in-linux/|source]] find . -name '*.mp3' -exec cp --parents \{\} ~/target \; * ''find'' – commande pour rechercher des fichiers et des dossiers dans les systèmes de type Unix. * Le point (''.'') - signifie que nous avons copié le contenu du répertoire actuel. * ''-name ‘*.mp3''' – recherche des fichiers avec l'extension .mp3 * ''-exec cp'' – exécutez la commande 'cp' pour copier les fichiers de la source vers le répertoire de destination. * ''--parents'' - créez les répertoires parents intermédiaires si nécessaire pour préserver la structure des répertoires parents. * ''\{\}'' – est automatiquement remplacé par le nom de fichier des fichiers trouvés par la commande « find ». Et les accolades sont échappées pour les protéger de l'expansion par le shell dans certaines versions de commande "find". Vous pouvez également utiliser ''{}'' sans caractères d'échappement. * ''~/target'' – répertoire cible pour enregistrer les fichiers correspondants. * ''\;'' – indique que les commandes à exécuter sont maintenant terminées et qu'il faut exécuter à nouveau la commande lors du prochain match. ==== copier récursivement tous les fichiers sans conserver l'arborescence ==== find . -name '*.PNG' -exec cp \{\} allpics/ \; Ici nous sommes à la racine de l'arborescence à explorer et le dossier de destination est ''allpics''. ==== lister les différences entre deux répertoires ==== compter les différences diff -y <(cd /chemin/du/dossier/1/ && ls -R) <(cd /chemin/du/dossier/2/ && ls -R) | wc -l lister les différences dans diff.log diff -y <(cd /chemin/du/dossier/1/ && ls -R) <(cd /chemin/du/dossier/2/ && ls -R) > diff.log ajouter ''grep -E \/'' ou ''-d'' sur le ''ls'' permet de lister les répertoires ==== lister les duplicatas ==== [[https://buildvirtual.net/how-to-find-duplicate-files-on-linux/|source]] **detect duplicates** fdupes -Sr . ==== Utilisation du disque ==== quelques commandes pratiques : #lister les 30 plus gros fichier d'une arborescence du -Sh | sort -rh | head -30 #ncurse disk usage ncdu #sur system de fichier distant ssh -C user@system ncdu -o- / | ./ncdu -f-