GNU/Linux >> Znalost Linux >  >> Linux

Jak přesunout všechny soubory včetně skrytých souborů do nadřazeného adresáře přes *

Myslím, že toto je nejelegantnější, protože se také nesnaží posunout .. :

mv /source/path/{.[!.],}* /destination/path

Komplexní sadu řešení naleznete v odpovědi UNIX &Linux na Jak přesunete všechny soubory (včetně skrytých) z jednoho adresáře do druhého?. Ukazuje řešení v Bash, zsh, ksh93, standardní (POSIX) sh atd.

Tyto dva příkazy můžete použít společně:

mv /path/subfolder/* /path/   # your current approach
mv /path/subfolder/.* /path/  # this one for hidden files

Nebo vše dohromady (díky pfnuesel):

mv /path/subfolder/{.,}* /path/

Což se rozšíří na:

mv /path/subfolder/* /path/subfolder/.* /path/

(příklad:echo a{.,}b expanduje na a.b ab )

Všimněte si, že se zobrazí několik varování:

mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory

Prostě je ignorujte:děje se to proto, že /path/subfolder/{.,}* také expanduje na /path/subfolder/. a /path/subfolder/.. , což jsou adresář a nadřazený adresář (viz Co znamenají „.“ a „..“, když jsou ve složce?).

Pokud chcete pouze kopírovat, můžete použít pouhé:

cp -r /path/subfolder/. /path/
#                     ^
#                     note the dot!

Tím se zkopírují všechny soubory, normální i skryté, od /path/subfolder/. expanduje na "vše z tohoto adresáře" (Zdroj:Jak kopírovat pomocí cp, aby zahrnoval skryté soubory a skryté adresáře a jejich obsah?)


To přesune všechny soubory do nadřazeného adresáře, jak se očekávalo, ale nepřesune skryté soubory. Jak to udělat?

Můžete zapnout dotglob :

shopt -s dotglob               # This would cause mv below to match hidden files
mv /path/subfolder/* /path/

Chcete-li vypnout dotglob , musíte říct:

shopt -u dotglob

Linux
  1. Jak najít soubor v Linuxu ve všech adresářích rekurzivně

  2. Jak Globovat každý skrytý soubor kromě aktuálního a nadřazeného adresáře?

  3. Jak odstranit všechny soubory s konkrétní příponou v konkrétní složce?

  1. Jak přesunout všechny zdrojové soubory Java do jejich příslušného adresáře balíčku?

  2. Jak přesunout (a přepsat) všechny soubory z jednoho adresáře do druhého?

  3. Jak přesunout všechny soubory z aktuálního adresáře do horního adresáře?

  1. Jak mohu rekurzivně zkopírovat všechny soubory pdf v adresáři (a jeho podadresářích) do jednoho výstupního adresáře?

  2. Jak odstranit všechny soubory v adresáři kromě některých?

  3. Jak najít všechny nulabajtové soubory v adresáři