kopiere Dateien in einen anderen Ordner - find

867
diego9403

Ich muss Dateien mit ihrem Typ mit dem Befehl 'find' in den Ordner kopieren. Es gibt viele Dateien mit vielen Ordnern. Ich habe Befehl versucht:

find ./find -type f -exec bash -c ' file -b "$1"|cut -d " " -f 1 ' none {} \; 

Ich weiß jedoch nicht, wie ich mit mkdir Ordner erstellen kann, wenn ich "|" verwende.

Ich denke über zwei Befehle nach. Erstellen Sie zuerst die Ordner aus dem Dateityp. Kopieren Sie die Dateien in diesen Ordner.

Aber wie kann ich diese Ordner machen?

0
Was ist der Vorteil von "find" hier? Warum verwenden Sie nicht [`rsync`] (http://linux.die.net/man/1/rsync), um Inhalte von einem Ordner in einen anderen zu synchronisieren? JakeGould vor 8 Jahren 0
Dies ist eine Aufgabe aus Studien und wir haben rsync nicht verwendet. diego9403 vor 8 Jahren 0
Ich habe die Lösung gefunden: 'find ./find -typ f -exec bash -c' Datei -b "$ 1" | cut -d "" -f 1 | awk -f aw 'none {} \; | xargs mkdir' aber ich Diese Datei kann nicht kopiert werden. Mein Befehl: 'find ./find -type f -exec bash -c' Datei -b "$ 1" | cut -d "" -f 1 | awk -f aw | cp "$ 1" 'none {} \; "Und Fehler: cp: Verzeichnis" find / PNG / "weglassen diego9403 vor 8 Jahren 0
Ich versuche, Dateien in einen anderen Ordner zu kopieren, aber ich kann nicht. Befehl: find ./find -type f -exec bash -c 'Datei -b "$ 1" | cut -d "" - f 1 | awk -f wa | xargs cp "$ 1"' none {} \; Aber ich sehe nur Fehler: cp: `./find/PDF/20163.32630.27874 'und` find / PDF 20163.32630.27874' sind die gleiche Datei diego9403 vor 8 Jahren 0

1 Antwort auf die Frage

0
John1024

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.