alle Dateien verschieben außer mit der Erweiterung

alle Dateien verschieben außer mit der Erweiterung

Ich habe eine tar.bz2-Datei aus meinen Downloads nach /usr/src verschoben, wo ich gerne alle Dinge speichere, die ich auf meinem System installiere. Jetzt habe ich die Datei extrahiert und möchte ihren Inhalt nach /usr/share/icons verschieben. Aber ich möchte die tar.bz2-Datei selbst nicht verschieben:

# ls -l | grep Comix
-rw-rw-r--  1 guarddog guarddog   2190951 May 26 11:03 ComixCursors-0.8.2.tar.bz2
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Black
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Blue
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Green
drwxr-xr-x  3 root     root          4096 Oct 23  2013 ComixCursors-Orange

Im Ausgabebefehl möchte ich alles außer tar.bz2 innerhalb des Terminals verschieben.

Ich habe Folgendes versucht, aber leider verschiebt es auch das tar.bz2:

 mv Comix*[!tar.bz] /usr/local/share

Ich hatte erwartet, dass der Negationsoperator die Datei mit der Endung tar.bz ausschließt. Die folgende Lösung ist genau das, wonach ich gesucht habe. Ich wollte find nicht mit komplizierten Flags verwenden.

Antwort1

Sie können die GLOBIGNOREVariable von verwenden bash:

GLOBIGNORE=ComixCursors-0.8.2.tar.bz2

Führen Sie nun Folgendes aus:

mv ComixCursors* /usr/share/icons/

Beachten Sie auch, dass es gut ist, die Variable zu löschen, wenn Sie mit dem Vorgang fertig sind, unsetum unerwünschte Szenarien zu vermeiden:

unset GLOBIGNORE

Oder

GLOBIGNORE=

Antwort2

Verwenden Sie das gute alte find:

find /usr/src -maxdepth 1 -type f -name "Comix*[^\.tar\.bz2]" -print0 | xargs -I{} -0 mv {} /usr/share/icons/

Antwort3

Es gibt auch einen einfachen Befehl, den Sie beispielsweise in Ihrem Home-Verzeichnis verwenden können. Wir haben einen Ordner „Xtest“, der test.tar.gzund usw. enthält test.txt, test2.txtund einen leeren Ordner „Xtest2“, in den wir alle Dateien außer diesen verschieben möchten .tar.gz:

cd ~/Xtest
mv !(test.tar.gz) ~/Xtest2

Der gesamte Inhalt außer test.tar.gzwird in den Ordner verschoben Xtest2.

verwandte Informationen