Verwenden Sie Ihren File-Cut-Ausdruck, um den Verzeichnisnamen zu ermitteln:
find . -type f -exec bash -c 'd="../$(file -b "$1"|cut -d " " -f 1)"; mkdir -p "$d"; cp "$1" "$d" ' none {} \;
Wie es funktioniert
d=../$(file -b "$1"|cut -d " " -f 1)
Dadurch wird der Name des Verzeichnisses gefunden, das dem Dateityp entspricht. Ich fügte hinzu
../
, um diese unter das übergeordnete Verzeichnis zu stellen. Vielleicht möchten Sie sie woanders hinstellen.mkdir -p "$d"
Dadurch wird das Verzeichnis erstellt, falls es noch nicht vorhanden ist.
cp "$1" "$d"
Dadurch wird die Datei in das Verzeichnis kopiert.