GNU/Linux >> Znalost Linux >  >> Linux

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

Tato otázka zde již obsahuje odpovědi :Jak přesunete všechny soubory (včetně skrytých) z jednoho adresáře do druhého?

(12 odpovědí)
Uzavřeno před 6 lety.

Chci globovat každý skrytý soubor a adresář, ale ne aktuální (. ) a nadřazený adresář (.. ).

Používám bash.

Sledujte aktuální chování:

$ ls -a
.  ..  ...a  ...aa  ..a  ..aa  .a  .aa  .aaa  a
$ echo *
a
$ echo .*
. .. ...a ...aa ..a ..aa .a .aa .aaa

Chtěl bych .* chovat se takto

$ echo .*
...a ...aa ..a ..aa .a .aa .aaa

Existuje možnost shellu dotglob

$ shopt -s dotglob

to svým způsobem funguje; nyní mohu použít * globovat vše (skryté nebo ne), ale ne . a ..

$ echo *
...a ...aa ..a ..aa .a .aa .aaa a

ale teď nedokážu rozlišit mezi skrytým nebo ne. Také .* stále globs . a ..

$ echo .*
. .. ...a ...aa ..a ..aa .a .aa .aaa

Existuje způsob, jak vytvořit .* nerozbalit na . a .. ?

Přijatá odpověď:

Můžete použít GLOBIGNORE proměnnou pro skrytí . a .. adresáře. Tím se automaticky nastaví také dotglob možnost, takže * nyní odpovídá skrytým i neskrytým souborům. Opět můžete ručně zrušit nastavení dotglob , ale to pak dává chování, které chcete.

Viz tento příklad:

$ ls -a
.  ..  a  .a  ..a
$ GLOBIGNORE=".:.."
$ shopt -u dotglob
$ echo * # all (only non-hidden)
a
$ echo .* # all (only hidden)
.a ..a

Linux
  1. Jak zajistit, aby byly soubory a adresáře neodstranitelné, a to i přes kořen v Linuxu

  2. Jak přihlásit každý příkaz zadaný do Bash a každou operaci se souborem?

  3. Jak povolím indexování souborů a adresářů Apache v systému Linux nebo UNIX?

  1. `^m` A jak se toho zbavit?

  2. Jak vypsat rekurzivní velikosti souborů a adresářů v adresáři?

  3. Jak změnit oprávnění k souborům a adresářům pomocí Správce souborů

  1. Jak zabránit úpravám, mazání a přejmenování souborů/adresářů v Linuxu?

  2. UNIX / Linux:Jak používat Sticky Bit na adresář a soubor

  3. Jak spravovat oprávnění/vlastnictví souborů a adresářů v Linuxu