Finché cerchi solo file e cartelle nascosti a livello di A e non vuoi, ad esempio
A/b/.hidden
da copiare, dovresti essere in grado di usare questo:
cp -r A/.[^.]* B
 In pratica significa copiare tutto ciò che inizia con . e poi qualsiasi carattere diverso da . Ciò esclude . e .. 
Modifica:rimosso -p dal comando cp poiché Asker non ha indicato di voler preservare proprietà, date, ecc.
 Il problema con A/.* è che c'è la directory . in A che corrisponde anche al pattern.
Puoi attivare i modelli glob estesi e utilizzare quanto segue:
shopt -s extglob
cp -r A/.!(?(.)) B    
Corrisponde ai file il cui nome inizia con un punto e il cui secondo carattere non è né un punto né niente ( ?(.) corrisponde a niente o a un punto, !(...) lo nega, cioè !(?(.)) corrisponde a tutto il resto che niente o un punto).
 Per casi come questo consigliamo di utilizzare find invece di cp come questo:
find A/ -type f -maxdepth 1 -name '.*' -exec cp -p {} B/ \;
La sintassi di base si suddivide in questo modo:
- find A/ -type f:- findelementi nella directory- A/il cui tipo è un file (invece di una directory)…
- -maxdepth 1 -name '.*':A questo per un- maxdepthdi 1 directory e di cui- nameinizia con- ..
- -exec cp -p {} B/ \;:E una volta trovati questi file,- execil- cpcomando con un- -pflag per preservare date/orari dalla fonte (- {}) alla destinazione di- B/.
 Mi piace usare maxdepth per aggiungere un livello di controllo in modo da non copiare accidentalmente un intero filesystem. Ma sentiti libero di rimuoverlo.