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"

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.
find . -name '*.PNG' -exec cp \{\} allpics/ \;

Ici nous sommes à la racine de l'arborescence à explorer et le dossier de destination est allpics.

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

source

detect duplicates

fdupes -Sr .

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-
  • fr/tools/linux/file-handling.txt
  • Dernière modification : 2023/10/25 12:00
  • de admin