GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trier les fichiers dans des dossiers par type de fichier sur bash (avec la commande 'file') ?

Que diriez-vous de quelque chose comme ça :


mkdir -p `file -b --mime-type *|uniq`
for x in `ls`
do
        cp $x `file -b --mime-type $x`
done

J'utilise cp, ça ne marche pas avec les répertoires.


Ajustement de la réponse de Dadam :

#!/bin/bash

file --mime-type -F"&" [YOUR PATH]/* > filetypes.txt
mkdir -p `cut -f2 -d"&" filetypes.txt | sed 's/[ ,:]//g' | sort -u`
IFS=$'\n'
for x in `cut -f1 -d"&" filetypes.txt`
do
  mv "$x" `file -b --mime-type "$x" | sed 's/[ ,:]//g'`
done 

Cette réponse n'exécute pas file commande plusieurs fois pour chaque fichier, ce qui est inutile

file  -N --mime-type -F"-&-" * | awk -F"-&-" 'BEGIN{q="\047"}
{
  o=$1
  gsub("/","_",$2);sub("^ +","",$2)
  if (!($2  in dir )) {
    dir[$2]
    cmd="mkdir -p "$2
    print cmd
    #system(cmd) #uncomment to use
  }
  files[o]=$2
}
END{
 for(f in files){
    cmd="cp "q f q"  "q files[f]"/"f".jpg" q
    print cmd
    #system(cmd) #uncomment to use
 }
}'

de même, peut être fait avec le script bash4+ en utilisant des tableaux associatifs.


Linux
  1. Commande de tri sous Linux avec des exemples

  2. Comment enregistrer chaque commande tapée dans bash et chaque opération de fichier ?

  3. Script Bash pour trier les fichiers dans des dossiers alphabétiques sur Readynas Duo V1 ?

  4. Comment trier des fichiers sous Linux à l'aide de la commande Sort

  5. Comment compresser tous les fichiers de tous les sous-répertoires dans un fichier compressé dans bash

Comment utiliser la commande Linux rm avec des exemples

Comment rechercher des fichiers avec la commande fd sous Linux

Comment télécharger des fichiers avec la commande Curl sous Linux

Comment télécharger des fichiers avec la commande Wget sous Linux

Comment restaurer des fichiers et des dossiers avec JetBackup

Comment rechercher des fichiers avec des dizaines de critères avec la commande Bash Find