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-rwird es nur die Verzeichnisse überspringen.