Kopieren Sie Dateien und Verzeichnisse ohne Dateiinhalt

18

Gibt es eine Möglichkeit, die Verzeichnisstruktur mit Dateien, aber ohne deren Inhalt zu kopieren? Ich meine, ich möchte genau die gleichen Verzeichnisse mit Dateinamen, aber lassen Sie sie leer / leer. Ich habe nur wenige Beispielanwendungen in einer Programmiersprache und möchte sie mit meinem eigenen Stil umschreiben, aber die Art und Weise beibehalten, in der sie in Dateien organisiert waren.

Für jede Hilfe wäre ich dankbar.

dagi12
quelle

Antworten:

36

Von man cp

--attributes-only kopiert nicht die Dateidaten, sondern nur die Attribute

Wenn Sie also alle Ordner und Dateien kopieren möchten, die sich in befinden somedirectory

machen cp -R --attributes-only somedirectory destinationdirectory

Sergiy Kolodyazhnyy
quelle
Genau das brauche ich. Vielen Dank.
dagi12
4
+1, weil ich nicht dachte, dass jemand dies bereits implementiert hat - sehr überrascht.
Margarciaisaia,
@mgarciaisaia Ich war nur überrascht, wie Sie sind, als ich heute Morgen die
Manpage durchgesehen habe
10

Schön, dass Ubuntu cpdiese Funktion hat, aber wenn Sie sich auf einer Maschine befinden sollten, auf der dies nicht der Fall ist (BSD cpzum Beispiel nicht, also auch nicht OS X), ist dies sehr einfach find. Hier ist es zweizeilig (zur besseren Lesbarkeit):

% cd original_dir
% find . -type d -exec mkdir -p ../copy_dir/{} \;
% find . -type f -exec touch ../copy_dir/{} \;

Wenn copy_dirbereits vorhanden, können Sie das -pArgument überspringen , mkdirda findder Verzeichnisbaum von oben nach unten durchsucht wird. Für große Aufträge können Sie eine weitere Millisekunde oder so durch das Beenden der Befehle mit abrasieren +statt , \;wenn Ihr findes unterstützt (es wahrscheinlich der Fall ist).

Bearbeiten: Die obigen Befehle wurden vernachlässigt, um symbolische Links zu behandeln, die mit einem dritten Durchlauf von kopiert werden können find( beenden Sie diesen nicht mit +):

% find . -type l -exec cp -R {} ../copy_dir/{} \;
alexis
quelle