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

So verschieben Sie alle Dateien, einschließlich versteckter Dateien, in das übergeordnete Verzeichnis über *

Das finde ich am elegantesten, da es auch nicht versucht .. zu verschieben :

mv /source/path/{.[!.],}* /destination/path

Eine umfassende Reihe von Lösungen dazu finden Sie in der Antwort von UNIX &Linux auf Wie verschieben Sie alle Dateien (einschließlich versteckter Dateien) von einem Verzeichnis in ein anderes?. Es zeigt Lösungen in Bash, zsh, ksh93, Standard (POSIX) sh usw.

Sie können diese beiden Befehle zusammen verwenden:

mv /path/subfolder/* /path/   # your current approach
mv /path/subfolder/.* /path/  # this one for hidden files

Oder alle zusammen (danke pfnuesel):

mv /path/subfolder/{.,}* /path/

Was erweitert wird zu:

mv /path/subfolder/* /path/subfolder/.* /path/

(Beispiel:echo a{.,}b erweitert sich zu a.b ab )

Beachten Sie, dass hier einige Warnungen angezeigt werden:

mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory

Ignorieren Sie sie einfach:Dies geschieht, weil /path/subfolder/{.,}* wird auch zu /path/subfolder/. erweitert und /path/subfolder/.. , das sind das Verzeichnis und das übergeordnete Verzeichnis (Siehe Was bedeuten „.“ und „..“ in einem Ordner?).

Wenn Sie nur kopieren möchten, können Sie einfach Folgendes verwenden:

cp -r /path/subfolder/. /path/
#                     ^
#                     note the dot!

Dies kopiert alle Dateien, sowohl normale als auch versteckte, seit /path/subfolder/. expandiert zu "alles aus diesem Verzeichnis" (Quelle:Wie kopiert man mit cp, um versteckte Dateien und versteckte Verzeichnisse und deren Inhalt einzuschließen?)


Dadurch werden alle Dateien wie erwartet in das übergeordnete Verzeichnis verschoben, es werden jedoch keine versteckten Dateien verschoben. Wie geht das?

Sie könnten dotglob einschalten :

shopt -s dotglob               # This would cause mv below to match hidden files
mv /path/subfolder/* /path/

Um dotglob auszuschalten , müssten Sie sagen:

shopt -u dotglob

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

  2. Wie kann man jede versteckte Datei außer dem aktuellen und dem übergeordneten Verzeichnis globbeln?

  3. Wie lösche ich alle Dateien mit einer bestimmten Erweiterung in einem bestimmten Ordner?

  4. Wie verschiebe ich alle Java-Quelldateien in ihr jeweiliges Paketverzeichnis?

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

Alle Dateien in einem Verzeichnis rekursiv auflisten, einschließlich Dateien in Symlink-Verzeichnissen

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

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

Wie lösche ich alle Dateien in einem Verzeichnis außer einigen?

Wie erstellt man symbolische Links zu allen Dateien (Dateiklassen) in einem Verzeichnis?

So verschieben Sie alle Dateien und Ordner mit dem Befehl mv