Der Grund ist , weil in bash
, *
enthält keine Dateien , mit einem Punkt beginnen ( .
).
Du kannst rennen
cp A/.* B
Es wird Sie warnen , dass es nicht kopieren .
oder ..
, oder alle Unterverzeichnisse, aber das ist in Ordnung.
Wenn Sie Punktdateien und normale Dateien zusammen kopieren möchten, führen Sie den Befehl aus
cp A/.* A/* B
Du könntest auch rennen
shopt -s dotglob
cp A/* B
das wird funktionieren bash
, aber nicht sh
.
Und wenn Sie nichts dagegen haben, dass auch Unterverzeichnisse kopiert werden, ist dies die einfachste:
cp -R A/ B
Tipp: Wenn Wildcards jemals nicht das tun, was Sie erwarten, versuchen Sie, sie mit Echo auszuführen, z
$ echo A/*
A/file1 A/file2
$ echo A/.*
A/. A/.. A/.hidden1 A/.hidden2
$ echo A/.* A/*
A/. A/.. A/.hidden1 A/.hidden2 A/file1 A/file2
$ shopt -s dotglob
$ echo A/*
A/file1 A/file2 A/.hidden1 A/.hidden2
-r
. Ohne-r
wird es nur die Verzeichnisse überspringen.