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
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
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-