GNU/Linux >> Znalost Linux >  >> Linux

Jak kopírovat skryté (začínající tečkou) soubory a podadresáře v linuxu?

Pokud například hledáte skryté soubory a složky na úrovni A a nechcete

A/b/.hidden

ke zkopírování byste měli být schopni použít toto:

cp -r A/.[^.]* B

V podstatě to znamená zkopírovat cokoliv, co začíná . a poté jakýkoli znak jiný než . Tím se odfiltruje . a ..

Edit:Odstraněno -p z příkazu cp, protože Asker neuvedl, že chce zachovat nějaká vlastnictví, data atd.


Problém s A/.* je, že existuje adresář . v A který také odpovídá vzoru.

Můžete zapnout rozšířené vzory globusů a použít následující:

shopt -s extglob
cp -r A/.!(?(.)) B    

Vyhovuje soubory, jejichž název začíná tečkou a jejichž druhý znak není ani tečka, ani nic ( ?(.) neodpovídá ničemu nebo tečce, !(...) to neguje, tj. !(?(.)) odpovídá všemu ostatnímu než nic nebo tečka).


Pro takové případy doporučujeme použít find místo cp takhle:

find A/ -type f -maxdepth 1 -name '.*' -exec cp -p {} B/ \;

Základní syntaxe se rozpadá takto:

  • find A/ -type f :find položky v adresáři A/ jehož typem je soubor (místo adresáře)…
  • -maxdepth 1 -name '.*' :K tomu pro maxdepth z 1 adresářů a jejichž name začíná . .
  • -exec cp -p {} B/ \; :A jakmile jsou tyto soubory nalezeny, exec cp příkaz s -p příznak pro zachování dat/časů ze zdroje ({} ) do cíle B/ .

Rád používám maxdepth přidat vrstvu kontroly, abych náhodou nekopíroval celý souborový systém. Ale klidně to odstraňte.


Linux
  1. Jak komprimovat soubory a adresáře v systému Linux (s příklady)

  2. Jak přenášet soubory v Linuxu pomocí SCP a Rsync

  3. Jak chmodovat a chown skryté soubory v Linuxu?

  1. Jak šifrovat soubory pomocí gocryptfs na Linuxu

  2. Jak najít soubory s oprávněními SUID a SGID v Linuxu

  3. Jak najít velké soubory linux pomocí příkazů find a du

  1. Jak archivovat a komprimovat soubory na Linuxu

  2. Jak kopírovat soubory v Linuxu a Unixu? 10 cp Příklady příkazů

  3. Jak kopírovat / přesouvat soubory a adresáře v Linuxu pomocí příkazů „cp“ a „mv“.