Ich habe eine Reihe von 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, sodass ich ls | grep IDENTIFIER
die genaue Liste der zu verschiebenden Dateien abrufen kann.
Aber wie kann ich mv file /path/to/dest/folder/
sofort und nicht nacheinander ausführen (es müssen viele Dateien verschoben werden)?
quelle
mv file1 file2 ... destination
ls
.Sie können Platzhalter verwenden .
Beispiel: Verschieben aller Dateien mit der Erweiterung .doc
mv *.doc /path/to/dest/folder/
Dadurch werden alle doc-Dateien im aktuellen Verzeichnis an das angegebene Ziel verschoben.
Bearbeiten
Um den Kommentar zu beantworten.
mv *.ext *.xml *.txt /path/to/dest/folder/
quelle
ABC-IDENTIFIER-XYZ.ext
undIDENTIFIER-XYZ.ext
andere haben meistensxml
oder alle unterschiedliche Erweiterungenproperties
..xml
Dateien gibt (zum Beispiel), die ich nicht verschieben möchte.Wenn Sie eine Reihe irrelevanter Dateien verschieben möchten (kein gemeinsames Muster in den Namen und Typen), können Sie wie von Herrn Rajanand angegeben vorgehen: Gehen Sie zunächst in das Verzeichnis, in dem sich die zu verschiebenden Dateien befinden
Falls sich die Dateien in verschiedenen Verzeichnissen befinden, müssen Sie nur den Pfad für jede Datei im Befehl move angeben
quelle
Ich benutze Tuomaz Technik, aber leicht modifiziert:
Ich finde das leichter zu merken und schwieriger zu vermasseln, da es die gleiche Reihenfolge wie die Vanille-MV-Operation verwendet:
quelle
mv
erwähnt keine-t
Option.Verwenden Sie diesen Befehl:
Ls wird jedoch für diese Art der Verwendung nicht empfohlen. Verwenden Sie stattdessen den Befehl find .
quelle
ls
wird für diese Verwendung nicht empfohlen. Wenn Sie Dateien auflisten möchten, insbesondere mit einemgrep
Behind, verwenden Siefind . -name \*IDENTIFIER\*
.ls
Wenn Sie so viele Dateien verschieben müssen, können Sie tatsächlich zu viele für den
mv
Befehl (oder andere Befehle wierm
) haben. Ich schlagexargs
vor, jede Datei einzeln in einer Schleife zu verschieben. Eine Möglichkeit, dies zu umgehen, besteht darin, Folgendes zu tun:Das
ls -1
(minus eins) stellt sicher, dass in jeder Zeile nur ein Dateiname steht. Wenn Sie Aliase für denls
Befehl ausgeblendet haben, können Sie mehrere Dateinamen in einer einzelnen Zeile haben und versehentlich eine Datei verschieben, die Sie nicht verschieben wollten.quelle
Wenn sich die Dateien in demselben Verzeichnis befinden, können Sie sie verwenden
(getestet in Ubuntu 16.04)
quelle
Dieser Befehl verschiebt Dateinamen mit einem beliebigen Muster / Bereich in das Zielverzeichnis.
z.B.
es werden die Dateien mit Namen bewegen sich wie
file1
,file2
...file50000
zutarget-directory
.quelle
Sie können die Ausgabe von ls zur Eingabe in mv commnad verwenden
mv $(ls | grep IDENTIFIER) /path/to/dest/dir
Der Befehl between
$()
gibt eine Liste der Dateinamen zurück, die Ihrer Suche entsprechen, und die als Parameter für den Befehl mv angegeben werden kann.quelle
ls
Mit diesem Befehl können Sie mehrere Dateien verschieben.
mv SourceFilenames ~DestinationPath
quelle
Der einfachste Weg ist so
oder Verzeichnis
oder sowohl Dateien als auch Verzeichnisse
Hoffe das hilft
quelle