Řešení 1:
Téměř pokaždé to lze vyřešit pomocí:
cp -R .[a-zA-Z0-9]* directory
Je docela neobvyklé mít skrytý soubor, který nezačíná jedním z těchto znaků.
 K dispozici jsou další shody vzorů (.??* , .[^.]* ) - viz komentáře
Řešení 2:
Můj oblíbený přesun dirs obecně byl:
tar cvf - . | (cd /dest/dir; tar xvf -)
který taruje aktuální adresář na stdout, pak jej převádí do podshell, který první cd je do cílového adresáře, než zruší tarring stdin. Jednoduché, přímé, rozšiřitelné - zvažte, co se stane, když nahradíte () ssh na jiný počítač. Nebo jako odpověď na vaši otázku můžete udělat:
tar cvf - .* --exclude=\. --exclude=\.\. | (cd /dest/dir; tar xvf -)
Řešení 3:
 Můžete použít rsync .
rsync -a ./ /some/other/directory/
 který zkopíruje obsah aktuálního adresáře (včetně tečkových souborů, ale ne včetně .. )
Řešení 4:
 Prosím vás, ustupte od prosté expanze shellu na cp příkazový řádek - rozšíření shellu má všechny druhy ehm "zajímavá" rohová pouzdra (nežádoucí rekurze způsobená . a .., mezery, netisknutelné položky, pevné odkazy, symbolické odkazy atd.) Použijte find místo toho (dochází v findutils balíček, v případě, že jej nemáte nainstalovaný – což by bylo divné, všechny distribuce jej instalují standardně):
find -H /path/to/toplevel/dir/ -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec cp -a '{}' /path/to/destination/dir/ \;
Vysvětlení krok za krokem:
-Hzpůsobífindnenásledovat symbolické odkazy (kromě případů, kdy skutečný název adresáře nejvyšší úrovně, který jste mu dali, je symbolický odkaz; bude následovat.)
/path/to/toplevel/dir/je, samozřejmě, měl být vámi nahrazen cestou do adresáře, který hostí soubory nastavení a adresáře, které chcete zálohovat.
-maxdepth 1zastavífindz rekurzivního sestupu do všech adresářů, jejichž název začíná tečkou. Nepotřebujeme to k rekurzi,cpudělá to za nás, potřebujeme jen jména na této úrovni.
-name '.*'říkáfindže chceme všechna jména začínající tečkou. Toto nebude fungovat správně, pokud je proměnná prostředíPOSIXLY_CORRECTje nastaven, ale zřídka (pokud vůbec) je. Toto je první podmínka shody, kterou jsme zatím specifikovali.
a \( ....... \)je a následuje složitější podmínka v závorkách (použil jsem ..... k jejímu nahrazení, je to vysvětleno níže.) Musíme závorky opustit, protože jinak by byly (nesprávně) interpretovány shellem, proto zpětné lomítko před nimi,
-type d -o -type f -o -type ljsou tři podmínky s nebo mezi nimi.-type dodpovídá adresářům,-type fodpovídá běžným souborům a-type lodpovídá symbolickým odkazům. Můžete si vybrat, co chcete – pokud například nechcete zálohovat adresáře nastavení, vynechejte-type d(a-ohned za tím, samozřejmě.)
-exec ..... \;říkáfindprovést příkaz pokaždé, když je nalezena shoda. Konec příkazu je označen středníkem, který opět musíme ukončit zpětným lomítkem, abychom se vyhnuli interpretaci shellu. V tomto příkazovém řádku musíte použít{}kde chcete, aby skončil název aktuálně nalezené shody. Protože shelly mohou také nesprávně interpretovat složené závorky, měli byste je umístit do apostrofů, jako v'{}'. Příkaz, který chceme v tomto případě provést, jecp -a '{}' /path/to/destination/dir/(-a znamená archiv, který se opakuje v podadresářích, kopíruje symbolické odkazy jako odkazy a zachovává oprávnění a rozšířené atributy a/path/to/destination/dir/je zjevně název cílového adresáře – nahraďte jej.)
 Takže, v jednoduché angličtině, toto find příkazový řádek říká toto:
Začněte na /path/to/toplevel/dir/. Nesestupujte do žádných podadresářů. Najděte všechny adresáře, soubory a symbolické odkazy, jejichž název začíná tečkou. U každého z těch, které jste našli, zkopírujte do /cesta/k/cíl/adresář/, přičemž zachováte povahu, oprávnění a rozšířené atributy.
Řešení 5:
Vždy jsem používal .??* k nalezení skrytých souborů, aniž bych dostal "." a "..". Může v něm chybět „.a“ nebo tak něco, ale já nikdy žádné takové nemám.