Válasz
Csak szüksége van a globális fájlok listájának létrehozásához szóközzel elválasztva:
for file in .* *; do echo "$file"; done
Szerkesztés
A fentiek különböző formában írhatók át a zárójel kiterjesztésével
for file in {.*,*}; do echo "$file"; done
vagy még rövidebben : for file in {.,}*; do echo "$file"; done
Útvonal hozzáadása a kijelölt fájlokhoz:
for file in /path/{..?,.[!.],}*; do echo "$file"; done
Útvonal hozzáadása a kijelölt fájlokhoz fájlok:
for file in /path/{.,}*; do echo "$file"; done
Ha kifinomultabbá akarsz válni és törlöd a listáról, általában szükségtelen .
és
csak változtassa meg a {.,}*
értéket {..?,.[!.],}*
-re.
A teljesség érdekében érdemes megemlítve, hogy a dotglob beállítható úgy is, hogy a dot-fájlok tiszta *
-hez illeszkedjenek.
shopt -s dotglob
A zsh
fájlban a nullglob
-t be kell állítani, hogy megakadályozzák a hibát nem egyezés esetén:
setopt nullglob
vagy alternatív megoldásként adja hozzá a glob osztályozót N
a mintához:
for file in /path/{.,}*(N); do echo "$file"; done
for file in dir/.* dir/*; do
.*
egyezik a.
és a..
(zsh kivételével).*
marad*
, ha nincs megfelelő fájl. Ashopt -s gotglob
csak bash-ban van.zsh: no matches found: .*
-et kapok, amikor futtatom a parancs (oka) t ebben a válaszban . Miért történne ez? A könyvtárban található fájlok a fájlokat mutatják.zsh
hibát ad vissza, ha valamilyen minta nem mérkőzések. Azsetopt nullglob
futtatás megakadályozása érdekében, amely globálisan kikapcsolja ezt a funkciót, vagy adjon hozzá egy(N)
minősítőt a globális csillag után, azaz:for file in /path/{.,}*(N); do echo "$file"; done
.