Ich muss Dateien in einen Ordner mit dem Namen ihres Typs kopieren, indem ich den Befehl 'find' verwende. Es gibt viele Dateien mit vielen Ordnern. Ich habe versucht Befehl:
find ./find -type f -exec bash -c ' file -b "$1"|cut -d " " -f 1 ' none {} \;
Aber ich weiß nicht, wie ich mit mkdir Ordner erstellen kann, wenn ich "|" benutze.
Ich denke an zwei Befehle. Erstellen Sie zuerst die Ordner aus den Dateitypen. Zweite Kopie von Dateien in diesen Ordner.
Aber wie kann ich diese Ordner machen.
find
hier? Warum nichtrsync
stattdessen Inhalte von einem Ordner in einen anderen synchronisieren?./find/PDF/20163.32630.27874' and
find / PDF 20163.32630.27874 'sind die gleiche DateiAntworten:
Verwenden Sie Ihren Dateischnitt-Ausdruck, um den Verzeichnisnamen zu bestimmen:
Wie es funktioniert
d=../$(file -b "$1"|cut -d " " -f 1)
Dies findet den Namen des Verzeichnisses, das dem Dateityp entspricht. Ich fügte
../
so hinzu , um diese unter dem übergeordneten Verzeichnis zu setzen. Vielleicht möchten Sie sie woanders ablegen.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.
quelle