Как перечислить полный путь к файлам / каталогам, используя только команду ls (работаю в ограниченной оболочке)

Если вы используете grep для поиска совпадений, вы можете использовать опцию -v в grep, чтобы получить строки, которые не совпадают.

1
22.10.2018, 18:18
2 ответа

Следующая функция выводит список всех файлов из каталога(/по умолчанию )в глубину -в первом порядке без использования даже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
0
28.01.2020, 00:24

Эта команда должна выполнять это, поскольку доступно эхо.

ls -Rr1. |  while read line; do case $line in *:) basepath=${line%:};; "") basepath=;; *) echo "$basepath/$line";; esac; done
0
28.01.2020, 00:24

Теги

Похожие вопросы