Вместо использования ls
используйте сопоставление с шаблоном оболочки:
for i in .* ; do echo $i; done;
Если вы хотите, чтобы все файлы, скрытые и обычные, делали:
for i in * .* ; do echo $i; done;
(Обратите внимание, что это также получитВы .
и ..
, если вы не хотите, чтобы те, которые вы должны были отфильтровать, также обратите внимание, что этот подход не работает, если нет (скрытых) файлов, в этом случае вам также придется отфильтровать *
и .*
)
Если вам нужны все файлы и вы не возражаете против использования bash
определенных параметров, вы можете уточнить это, установив dotglob
и nullglob
.dotglob
заставит *
также найти скрытые файлы (но не .
и ..
), nullglob
не вернет *
, если нет подходящих файлов.Так что в этом случае вам не нужно будет выполнять фильтрацию:
shopt -s dotglob nullglob
for i in * ; do echo $i; done;