GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verschieben Sie alle Dateien bis auf eine

Ein schneller Weg wäre, den Tux-Dateinamen so zu ändern, dass Ihr Verschiebebefehl nicht übereinstimmt.

Zum Beispiel:

mv Tux.png .Tux.png

mv * ~/somefolder

mv .Tux.png Tux.png

Fügen Sie Folgendes in Ihre .bashrc

ein
shopt -s extglob

Es erweitert reguläre Ausdrücke. Sie können dann alle Dateien bis auf eine verschieben um

mv !(fileOne) ~/path/newFolder

Ausnahmen in Bezug auf andere Befehle

Beachten Sie, dass beim Kopieren von Verzeichnissen der Forward-Flash nicht im Namen verwendet werden kann, wie im Thread Why extglob außer breaking except condition?:

erwähnt
cp -r !(Backups.backupdb) /home/masi/Documents/

also Backups.backupdb/ steht hier vor der Negation falsch und ich würde es auch nicht beim Verschieben von Verzeichnissen verwenden, da die Gefahr besteht, dass Globs mit anderen Befehlen und möglichen anderen Ausnahmen falsch verwendet werden.


Wenn Sie Bash verwenden und den extglob haben Shell-Optionssatz (was normalerweise der Fall ist):

mv ~/Linux/Old/!(Tux.png) ~/Linux/New/

Ich würde den traditionellen find &xargs-Weg wählen:

find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png -print0 | 
    xargs -0 mv -t ~/Linux/New

-maxdepth 1 macht es nicht rekursiv suchen. Wenn Sie sich nur um Dateien kümmern, können Sie -type f sagen . -mindepth 1 bewirkt, dass ~/Linux/Old nicht enthalten ist Pfad selbst in das Ergebnis. Funktioniert mit beliebigen Dateinamen, auch mit solchen, die eingebettete Zeilenumbrüche enthalten.

Ein Kommentar stellt fest, dass die mv -t Option ist wahrscheinlich eine GNU-Erweiterung. Für Systeme, die es nicht haben

find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png \
    -exec mv '{}' ~/Linux/New \;

Linux
  1. 3 Möglichkeiten zum Löschen aller Dateien in einem Verzeichnis außer einer oder wenigen Dateien mit Erweiterungen

  2. Wie verschiebt man alle Dateien (einschließlich versteckter) von einem Verzeichnis in ein anderes?

  3. Alle Dateien in einem Ordner außer den letzten (neuesten) 20 löschen?

  4. Wie verschiebt (und überschreibt) man alle Dateien von einem Verzeichnis in ein anderes?

  5. Wie verschiebt man alle Dateien vom aktuellen Verzeichnis in das obere Verzeichnis?

Wie verwendet man den Befehl „mv“, um Dateien außer denen in einem bestimmten Verzeichnis zu verschieben?

Befehl zum Auflisten aller Dateien außer . (Punkt) und .. (Punkt Punkt)

Löschen Sie alle Dateien außer den neuesten 3 im Bash-Skript

Eine Reihe von nummerierten Dateien verschieben?

Können Sie die Berechtigung für alle Dateien außer einem Verzeichnis in Linux ändern?

So verschieben Sie alle Dateien und Ordner mit dem Befehl mv