clean_path=`ls -a ~/example_dir/ | grep -v -P "^\.{1,2}$"`
for f in $clean_path; do
do_thing $f;
done
ls -a ~/some_dir
команда для распечатки всего файла в каталоге some_dir
.
^\.{1,2}$
означает, соответствует строка, начинающаяся (^
) с точки (* 1008)*) точка может содержать от 1 до 2 символов ({1,2}
), и это конец строки ($
), поэтому она будет соответствовать .
и ..
.
Использование backtick в команде означает «обработать результат этой команды».
grep -v -P
, -v
помечает флаг, чтобы инвертировать ответ, поэтому исключает соответствующий файл с именами .
и ..
,-P
флаг для использования регулярного выражения Perl.
Вуаля, теперь вы можете повторять их, так как результат разделяется только пробелом.