Tähän kysymykseen on jo annettu vastauksia :
Vastaa
Tarvitset vain luoda välilyönnillä eroteltu luettelo globaaleista vastaavista tiedostoista:
for file in .* *; do echo "$file"; done
Muokkaa
Yllä oleva voi kirjoittaa uudestaan eri muodossa käyttämällä aaltosulkeutta
for file in {.*,*}; do echo "$file"; done
tai jopa lyhyempää : for file in {.,}*; do echo "$file"; done
Polun lisääminen valituille tiedostoille:
for file in /path/{..?,.[!.],}*; do echo "$file"; done
Polun lisääminen valituille tiedostoille tiedostot:
for file in /path/{.,}*; do echo "$file"; done
Jos haluat olla hienostunut ja poistaa luettelosta, yleensä tarpeettomat . ja
muuta vain {.,}* muotoon {..?,.[!.],}*.
Täydellisyyden vuoksi se kannattaa mainita, että dotglob voidaan asettaa myös vastaamaan dot-tiedostoja puhtailla *.
shopt -s dotglob
Kohdassa zsh on lisäksi asetettava nullglob estämään virhe virheettömyydessä:
setopt nullglob
tai vaihtoehtoisesti lisää glob-määrittelijä N malliin:
for file in /path/{.,}*(N); do echo "$file"; done
for file in dir/.* dir/*; do.*vastaa.ja..(paitsi zsh-muodossa).*pysyy*, jos vastaavaa tiedostoa ei ole.shopt -s gotglobon vain bash-versiossa.zsh: no matches found: .*, kun suoritan tässä vastauksessa olevat komennot. . Miksi näin tapahtuisi? Hakemiston ls näyttää tiedostot.zshpalauttaa virheen, jos jokin kuvio ei Ottelut. Estää juoksusetopt nullglob, joka poistaa tämän ominaisuuden käytöstä globaalisti, tai lisää määritin(N)maailmantähden jälkeen, ts:for file in /path/{.,}*(N); do echo "$file"; done.