Wie verschiebt man mehrere Dateien gleichzeitig in ein bestimmtes Zielverzeichnis?

116

Ich habe eine Menge Dateien in einem Verzeichnis (zusammen mit vielen anderen Dateien), die ich verschieben möchte.

Glücklicherweise enthalten alle Dateien, die ich verschieben möchte, einen bestimmten Bezeichner in ihren Namen, so dass ich ls | grep IDENTIFIER erhalten kann, um die genaue Liste der zu verschiebenden Dateien zu erhalten.

Aber wie kann ich mv file /path/to/dest/folder/ gleichzeitig ausführen, und nicht eins nach dem anderen (es gibt eine Menge zu verschiebende Dateien)?

    
gilad hoch 08.11.2012, 14:13
quelle

11 Antworten

84

Wenn Sie ABC-IDENTIFIER-XYZ.ext oder IDENTIFIER-XYZ.xml verschieben möchten, können Sie Folgendes verwenden:

mv *IDENTIFIER* ~/YourPath/

* ist ein Platzhalter für null oder mehr Zeichen , dh null oder mehr Zeichen , gefolgt von IDENTIFIER , gefolgt von null oder mehr Zeichen .

Dadurch werden alle Dateien, die enthalten, in das von Ihnen angegebene IDENTIFIER verschoben.

    
Evandro Silva 08.11.2012, 14:33
quelle
165

Sie könnten

verwenden

mv -t DESTINATION file1 file2 file3

und

mv -t DESTINATION 'ls|grep IDENTIFIER'

funktioniert, aber ich bin mir nicht sicher, ob mv mehrmals aufgerufen wird oder nicht, da grep für jede Übereinstimmung eine neue Zeile ausgibt.

    
tuomaz 14.11.2012 12:07
quelle
20

Sie können Platzhalter verwenden.

Beispiel: Um alle Dateien mit der Endung .doc

zu verschieben

mv *.doc /path/to/dest/folder/

Dadurch wird die gesamte doc-Datei unter dem aktuellen Verzeichnis an das spezifische Ziel verschoben.

Bearbeiten

Um den Kommentar zu beantworten.

mv *.ext *.xml *.txt /path/to/dest/folder/

    
Achu 08.11.2012 14:21
quelle
15

Wenn Sie eine Reihe von irrelevanten Dateien verschieben möchten (kein gemeinsames Muster in den Namen und Typen), können Sie tun, wie Herr Rajanand sagte: Wechseln Sie zuerst zu dem Verzeichnis, das die Dateien enthält, die Sie verschieben möchten

mv file1.ext1 file2.ext2 file3.ext3.. /destination/

Falls die Dateien in verschiedenen Verzeichnissen verstreut sind, müssen Sie im move-Befehl

nur den Pfad für jede Datei angeben     
Ismail AL-taharwa 26.03.2014 05:03
quelle
10

Ich benutze Tuomaz 'Technik, aber leicht modifiziert:

mv file1 file2 file3 -t DESTINATION

Ich finde das leichter zu merken und schwerer zu vermasseln, da es die gleiche Reihenfolge wie die vanilla mv-Operation verwendet:

mv file1 DESTINATION
    
Blake Frederick 20.01.2015 17:11
quelle
7

Verwenden Sie diesen Befehl:

mv 'ls|grep IDENTIFIER' /path/to/dest/folder  

Allerdings wird ls für diese Art der Verwendung nicht empfohlen. Verwenden Sie stattdessen den Befehl .

    
ignite 08.11.2012 14:44
quelle
5

Wenn Sie so viele Dateien verschieben müssen, können Sie tatsächlich zu viele für den Befehl mv (oder andere Befehle wie rm ) haben. Ich empfehle, xargs zu verwenden, um jede Datei einzeln in einer Schleife zu verschieben. Eine Möglichkeit, das zu umgehen, ist:

ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/

Das ls -1 (minus eins) stellt sicher, dass es in jeder Zeile nur einen Dateinamen gibt. Wenn Sie Aliasnamen für den Befehl ls ausgeblendet haben, können Sie mehrere Dateinamen in einer Zeile haben und versehentlich eine Datei verschieben, die Sie nicht verschieben wollten.

    
AggieBill 14.11.2012 11:05
quelle
2

Sie können die Ausgabe von ls für die Eingabe in mv commnad verwenden

mv $(ls | grep IDENTIFIER) /path/to/dest/dir

Der Befehl zwischen $() gibt eine Liste der Dateinamen zurück, die Ihrer Suche entsprechen und die als Parameter für den Befehl mv bereitgestellt werden kann.

    
Fuad Saud 13.11.2012 20:38
quelle
2
find -type f -name "[range]" -exec mv {} target-directory ';'

Dieser Befehl verschiebt Dateinamen mit einem beliebigen Muster / Bereich in das Zielverzeichnis.

z.

find -type f -name "file[1-50000]" -exec mv {} target-directory ';'

Es werden Dateien mit Namen wie file1 , file2 ... file50000 bis target-directory .

verschoben     
user734124 07.09.2017 16:51
quelle
1

Mit diesem Befehl können Sie mehrere Dateien verschieben.

mv SourceFilenames ~DestinationPath

    
Rajanand 14.11.2012 11:13
quelle
0

Wenn sich die Dateien im selben Verzeichnis befinden, können Sie

verwenden
mv /path/to/source/dir/{file1,file2,*.ext1,*.ext2} /path/to/destination/

(getestet in Ubuntu 16.04)

    
Sruli 01.12.2017 10:19
quelle

Tags und Links