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 gotglobcsak 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.zshhibát ad vissza, ha valamilyen minta nem mérkőzések. Azsetopt nullglobfuttatá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.