Если вы используете grep для поиска совпадений, вы можете использовать опцию -v
в grep, чтобы получить строки, которые не совпадают.
Следующая функция выводит список всех файлов из каталога(/
по умолчанию )в глубину -в первом порядке без использования дажеls
:
lsr(){
for f in "$1/"* "$1/".[!.]* "$1/"..?*; do
test -e "$f" && echo "$f"
test -d "$f" && lsr "$f"
done
}
Пример:
$ lsr.
./dir
./dir/file
./dir/.dotfile
./.foo
./..bar
$ find. -depth
./dir/.dotfile
./dir/file
./dir
./.foo
./..bar
.
Можно сделать отдельным скриптом вместо функции:
#! /bin/sh
for f in "$1/"* "$1/".[!.]* "$1/"..?*; do
test -e "$f" && echo "$f"
test -d "$f" && "$0" "$f"
done
Эта команда должна выполнять это, поскольку доступно эхо.
ls -Rr1. | while read line; do case $line in *:) basepath=${line%:};; "") basepath=;; *) echo "$basepath/$line";; esac; done