Bagaimana dengan sesuatu seperti ini:
mkdir -p `file -b --mime-type *|uniq`
for x in `ls`
do
cp $x `file -b --mime-type $x`
done
Saya menggunakan cp, tidak bisa bekerja dengan direktori.
Penyesuaian jawaban 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
Jawaban ini tidak mengeksekusi file
perintah beberapa kali untuk setiap file, yang tidak perlu
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
}
}'
demikian pula, dapat dilakukan dengan skrip bash4+ menggunakan array asosiatif.
ffmpeg membagi avi menjadi bingkai dengan frekuensi gambar yang diketahui
cetak tumpukan panggilan dalam C atau C++