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 gotglob
on vain bash-versiossa.zsh: no matches found: .*
, kun suoritan tässä vastauksessa olevat komennot. . Miksi näin tapahtuisi? Hakemiston ls näyttää tiedostot.zsh
palauttaa 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
.