GNU/Linux >> Znalost Linux >  >> Linux

Jak zkopíruji soubor s názvem začínající tečkou?

Důvodem je, že v bash , * nezahrnuje soubory začínající tečkou (. ).

Můžete běžet

cp A/.* B

Upozorní vás, že nezkopíroval . nebo .. , nebo jakékoli podadresáře, ale to je v pořádku.

Nebo, pokud chcete zkopírovat tečkové soubory a normální soubory dohromady, spusťte

cp A/.* A/* B

Můžete také spustit

shopt -s dotglob
cp A/* B

který bude fungovat v bash , ale ne sh .

A pokud vám nevadí kopírování podadresářů, pak je to nejjednodušší:

cp -R A/ B

Tip:Pokud někdy zástupné znaky nedělají to, co očekáváte, zkuste je spustit s echo, např.

$ 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

Pokud bash, můžete nastavit dotglob než zkopírujete

shopt -s dotglob
cp A/* /destination

Nebo programovací jazyk

$ ruby -rfileutils -e  'Dir[".*"].each {|x| FileUtils.copy(x,"/destination") if File.file?x}'

Pokud nechcete nastavit dotglob, stačí

cp A/.* /destination 2>/dev/null

To, co hledáte, je více ve smyslu:

cp A/.??* B/

To bude odpovídat všem tečkovým souborům, ale ne "." nebo "..". Většina z výše uvedených řešení je v pořádku, pokud nepracujete rekurzivně. Ale jakmile budete chtít udělat něco jako:

cp -R A/.??* B/

Bez vynechání ".." zkopírujete vše z nadřazeného adresáře dolů, včetně souborů bez teček.


Linux
  1. Jak rekurzivně kopírovat soubory podle přípony souboru?

  2. Jak vytvořit soubor s danou velikostí v Linuxu?

  3. Jak napsat soubor s C v Linuxu?

  1. Jak zkompilovat .c soubor s OpenSSL zahrnuje?

  2. Jak podložit soubor pomocí FF pomocí dd?

  3. Kopírovat soubor Linux s ETA?

  1. Jak zkopírovat obraz ISO na USB pomocí dd

  2. Jak odstranit soubor s podivným názvem?

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