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

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

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

решение1

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

решение2

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

решение3

Увидев принятый ответ, я все еще не был удовлетворен. Как Дэниел узнал решение? Вы можете поспорить, что я сам прочитал manpage и все еще не мог понять, как.

На странице руководства lsнаписано:

Описание: Вывод информации о ФАЙЛАХ (текущий каталог по умолчанию)...

Ничего полезного там нет. Тогда я проверил POSIX Programmer's Manual:

Для каждого операнда, который именует файл типа каталог, ls запишет имена файлов, содержащихся в каталоге, а также любую запрошенную связанную информацию.

Эта строка объясняет поведение команды в принятом решении. Операнд FILEМОЖЕТ lsбыть каталогом и lsвыведет содержимое этого каталога. Именно то, что хотел OP. НО реализация в Linux может отличаться от спецификации здесь. Так что мы на правильном пути, но пока не достигли его.

Затем я поискал руководство по coreutilsпакету GNU, который lsявляется частью. Вот что я нашел:

Для непараметрических аргументов командной строки, являющихся каталогами, по умолчанию ls выводит список содержимого каталогов...

Это все объясняет.

Связанный контент