Dateien in anderen Ordner kopieren - finden

0

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.

diego9403
quelle
Was ist der Vorteil von findhier? Warum nicht rsyncstattdessen Inhalte von einem Ordner in einen anderen synchronisieren?
JakeGould
Dies ist eine Aufgabe aus Studien und wir haben rsync nicht verwendet.
diego9403
Ich habe die Lösung gefunden: 'find ./find -type f -exec bash -c' file -b "$ 1" | cut -d "" -f 1 | awk -f aw 'none {} \; | xargs mkdir' aber ich kann diese Datei nicht kopieren. Mein Befehl: 'find ./find -type f -exec bash -c' file -b "$ 1" | cut -d "" -f 1 | awk -f aw | cp "$ 1" 'none {} \; 'Und Fehler: cp: Verzeichnis `find / PNG /'
weglassen
Ich versuche, Dateien in einen anderen Ordner zu kopieren, kann dies jedoch nicht. Befehl: find ./find -type f -exec bash -c 'file -b "$ 1" | cut -d "" -f 1 | awk -f wa | xargs cp "$ 1"' none {} \; Aber ich sehe nur Fehler: cp: ./find/PDF/20163.32630.27874' and find / PDF 20163.32630.27874 'sind die gleiche Datei
diego9403

Antworten:

0

Verwenden Sie Ihren Dateischnitt-Ausdruck, um den Verzeichnisnamen zu bestimmen:

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)

    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.

John1024
quelle