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

Wie kopiert man versteckte (mit einem Punkt beginnende) Dateien und Unterverzeichnisse in Linux?

Solange Sie nur nach versteckten Dateien und Ordnern auf der Ebene A suchen und zum Beispiel nicht wollen

A/b/.hidden

zu kopieren, sollten Sie Folgendes verwenden können:

cp -r A/.[^.]* B

Es bedeutet im Grunde, alles zu kopieren, was mit einem . beginnt und dann ein beliebiges Zeichen außer . Das filtert . heraus und ..

Bearbeiten:Das -p aus dem cp-Befehl entfernt, da Asker nicht angegeben hat, dass er Eigentumsrechte, Daten usw. beibehalten möchte.


Das Problem mit A/.* ist, dass es das Verzeichnis . gibt in A was auch zum Muster passt.

Sie können erweiterte Glob-Muster aktivieren und Folgendes verwenden:

shopt -s extglob
cp -r A/.!(?(.)) B    

Es passt auf Dateien, deren Name mit einem Punkt beginnt und deren zweites Zeichen weder ein Punkt noch nichts ist (?(.) passt auf nichts oder einen Punkt, !(...) negiert es, d.h. !(?(.)) passt auf alles andere als nichts oder ein Punkt).


Für solche Fälle würde ich die Verwendung von find empfehlen statt cp so:

find A/ -type f -maxdepth 1 -name '.*' -exec cp -p {} B/ \;

Die grundlegende Syntax gliedert sich wie folgt:

  • find A/ -type f :find Einträge im Verzeichnis A/ dessen Typ eine Datei (anstelle eines Verzeichnisses) ist…
  • -maxdepth 1 -name '.*' :Dazu für ein maxdepth von 1 Verzeichnissen und deren name beginnt mit . .
  • -exec cp -p {} B/ \; :Und sobald diese Dateien gefunden wurden, exec die cp Befehl mit einem -p Flag, um Daten/Zeiten aus der Quelle beizubehalten ({} ) zum Ziel von B/ .

Ich verwende gerne maxdepth um eine Kontrollebene hinzuzufügen, damit ich nicht versehentlich ein ganzes Dateisystem kopiere. Aber Sie können das gerne entfernen.


Linux
  1. So komprimieren Sie Dateien und Verzeichnisse unter Linux (mit Beispielen)

  2. So finden Sie große Dateien unter Linux mit den Befehlen find und du

  3. Wie kopiert man Dateien unter Linux und Unix? 10 cp Befehlsbeispiele

  4. So kopieren / verschieben Sie Dateien und Verzeichnisse unter Linux mit den Befehlen „cp“ und „mv“.

  5. Wie kopiere ich eine Datei, die mit einem Punkt beginnt?

So benennen Sie Dateien und Verzeichnisse in Linux um

So komprimieren Sie Dateien und Verzeichnisse unter Linux

So kopieren Sie Dateien und Verzeichnisse unter Linux

So kopieren Sie eine große Anzahl von Dateien unter Linux

So kopieren Sie Dateien und Verzeichnisse im Linux-Terminal

So zeigen Sie versteckte Dateien unter Linux an