Как я могу перечислить файлы в другом (не текущем) каталоге?

10

Если ls перечисляет содержимое текущего каталога, существует ли аналогичная команда, которая выводит содержимое не текущего каталога без использования cd?

TifatulS
источник

Ответы:

12

После lsпросто введите путь к каталогу, который вы хотите перечислить, и вы получите его. Представьте, что вы находитесь в своем домашнем каталоге, но хотите перечислить /etc. Просто бегите, ls /etcи вы получите его в списке.

Даниэль Юсте Арока
источник
6

ls сделаю это.

Синтаксис для ls:

 ls flags file-or-directory-names

Для того, что я звоню file-or-directory-names, вы можете перечислить файлы в текущем каталоге, чтобы были перечислены только определенные файлы. Например, ls -l foo barбудет перечислять информацию только fooи в bar(в полной форме, как я дал -lфлаг). ls baz*goперечислит все файлы, имена которых начинаются с bazи заканчиваются go(если есть).

Но когда вы даете имя каталога , чтобы lsона перечисляет содержимое этого каталога вместо текущего каталога.

Итак, чтобы просмотреть содержимое /var/log, вы просто запустите:

ls /var/log

Если вы укажете относительный путь к каталогу, то есть тот, который не начинается с, то /он будет искать этот каталог внутри текущего каталога (так же, как он ищет файлы). Но он по-прежнему будет перечислять содержимое каталога, как вы хотите.

Как примечание, иногда вы можете обнаружить, что не хотите перечислять содержимое каталога, а просто перечислите каталог так же, как и файл. Для этого вы можете передать -dфлаг. Например, это показывает /var/logв полной форме (не его содержимое , а /var/logсамо):

ls -ld /var/log
Элия ​​Каган
источник
Очень подробно. Тем не менее, помните, что lsне несет ответственности за расширение baz*goдо всех файлов, которые начинаются bazи заканчиваются go- это оболочка, которая делает это.
krlmlr
@krlmlr Право, ls baz*goэто пример lsполучения (потенциально) нескольких аргументов для file-or-directory-names(и таким образом аналогично ls foo bar).
Элия ​​Каган,