Я хочу получить дерево каталогов всех файлов на сервере, для которого у меня есть разрешение на чтение. как я могу это сделать!?
На ум приходят два метода, find
и tree
. Я думаю, что из двух tree
лучше подходит для вашего вопроса.
Find
find
имеет то преимущество, что это базовый пакет, который можно найти в любом дистрибутиве Linux. Одним из недостатков является то, что он не будет генерировать древовидное представление. И это не будет легким. Вместо этого добавьте соответствующие -perm
тесты. Следующий пример найдет все каталоги в /
с правами пользователя, группы и других прав на чтение и отправит стандартную ошибку в /dev/null
find / -type d -perm /u=r -perm /g=r -perm /o=r 2>/dev/null
Дерево
Хотя tree
не может быть установлен по умолчанию, он находится в репозиториях. Это создает вид дерева. Если пользователь, выполняющий tree
, не имеет разрешения на чтение, простой grep -v error
удалит каталог из вывода. Однако удаление ошибок может привести к постороннему форматированию. -d
Список только каталогов. -p
Напечатайте тип файла и разрешения для каждого файла (согласно ls -l). grep -v
печатает строки, не соответствующие шаблону, error
.
tree -d -p / | grep -v error