GNU/Linux >> Linux Esercitazione >  >> Linux

Come ordinare i file in cartelle per tipo di file su bash (con il comando 'file')?

Che ne dici di qualcosa del genere:


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

Uso cp, non può funzionare con le directory.


Modifica della risposta di 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 

Questa risposta non esegue file comando più volte per ogni file, il che non è necessario

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

allo stesso modo, può essere fatto con lo script bash4+ usando array associativi.


Linux
  1. Ordina il comando in Linux con esempi

  2. Come registrare ogni comando digitato in Bash e ogni operazione su file?

  3. Script Bash per ordinare i file in cartelle alfabetiche su Readynas Duo V1?

  4. Come trovare file con il comando fd in Linux

  5. Come gzippare tutti i file in tutte le sottodirectory in un file compresso in bash

Come utilizzare il comando Linux rm con esempi

Come trovare file con il comando fd in Linux

Come scaricare file con il comando Curl in Linux

Come scaricare file con il comando Wget in Linux

Come ripristinare file e cartelle con JetBackup

Come trovare file con dozzine di criteri con il comando Trova Bash