Прежде всего, корневым каталогом является /
, а не /root
. /root
- домашний каталог пользователя root
. Кроме того, вам не нужно sudo
чтобы перечислить его содержимое. Просто делать:
ls /
Чтобы вывести список всех файлов (и каталогов), начиная с abc
, вы хотите
ls /abc*
Чтобы перейти в корневой каталог, просто запустите cd /
.
Команда ls /abc*
обрабатывает файлы и папки по-разному. Глоб расширяется вашей оболочкой (bash) до всех файлов и папок, начинающихся с abc
. ls
перечислит содержимое любых каталогов, которые вы ему предоставите. Например:
$ ls -l
total 4
-rw-r--r-- 1 terdon terdon 0 Jan 23 20:25 dfile.txt
drwxr-xr-x 2 terdon terdon 4096 Jan 23 20:25 dir1
$ ls dir1
-rw-r--r-- 1 terdon terdon 0 Jan 23 20:25 file2.txt
Итак, у меня есть каталог с именем dir1
и файл с именем dfile.txt
. Каталог содержит другой файл, file1.txt
. Теперь, если я запускаю ls d*
, он перечислит файл dfile.txt
и содержимое каталога dir1
:
$ ls d*
dfile.txt
dir1:
file2.txt
Если вы не хотите, чтобы ls
содержимое каталогов, запустите его с опцией -d
. Как объяснено в man ls
:
-d, --directory
list directory entries instead of contents, and do not derefer‐
ence symbolic links
Так, например:
$ ls -d d*
dfile.txt dir1
Чтобы вывести список всех файлов и каталогов, начинающихся с abc
в /
без списка содержимого каталога, выполните следующее:
$ ls -d /abc*
В качестве альтернативы, если вы хотите только файлы, используйте find
:
$ find / -maxdepth 1 -type f -name "abc*"
От man find
:
-maxdepth levels
Descend at most levels (a non-negative integer) levels of direc‐
tories below the command line arguments.
-name pattern
Base of file name (the path with the leading directories
removed) matches shell pattern pattern.
-type c
File is of type c:
d directory
f regular file