Как составить список файлов с полными путями в Linux?

Как составить список файлов с полными путями в Linux?

В Linux есть ли эквивалент, Dir /s /a /bгде указан полный путь и имя файла? Я новичок в Linux, и без графического интерфейса я хочу получить представление о структуре того, что находится на жестком диске.

решение1

Используйте findкоманду. По умолчанию она рекурсивно выведет список всех файлов и папок, начиная с текущего каталога, с полным (относительным) путем.

Если вам нужен полный путь, используйте:

find "$PWD"

Если вам нужен относительный путь, используйте:

find .

Здесь $PWD— переменная, содержащая текущий рабочий каталог.

Некоторые варианты:

  • Если вы хотите ограничить его только файлами или папками, используйте find "$PWD" -type fили find -type dсоответственно.
  • Если вы хотите, чтобы он остановился на определенной глубине каталога, используйте find "$PWD" -maxdepth 2, например, .

ЧитатьПоиск файловдля подробного руководства по GNU find, который используется по умолчанию в Linux.

решение2

У меня сегодня был такой же вопрос. Я нашел команду под названием "realpath", вот пример:

$ realpath ~/.bashrc
/home/harleygolfguy/.bashrc

решение3

Решение для Linux:

$ pwd
/home/victoria

$ find $(pwd) -maxdepth 1 -type f -not -path '*/\.*' | sort
/home/victoria/new
/home/victoria/new1
/home/victoria/new2
/home/victoria/new3
/home/victoria/new3.md
/home/victoria/new.md
/home/victoria/package.json
/home/victoria/Untitled Document 1
/home/victoria/Untitled Document 2

$ find . -maxdepth 1 -type f -not -path '*/\.*' | sed 's/^\.\///g' | sort
new
new1
new2
new3
new3.md
new.md
package.json
Untitled Document 1
Untitled Document 2

Примечания:

  • .: текущая папка
  • удалить -maxdepth 1для рекурсивного поиска
  • -type f: найти файлы, а не каталоги ( d)
  • -not -path '*/\.*': не возвращать.hidden_files
  • sed 's/^\.\///g': удалить добавленное ./из списка результатов

решение4

Для полноты информации ls -lR /команда выведет список имен каждого файла, его типов, битов режима файла, количества жестких ссылок, имени владельца, имени группы, размера и временной метки каждого файла (к которому у вас есть разрешение на доступ) от корневого каталога вниз. ( lдля длинного списка, т. е. всей этой информации, Rдля рекурсивного просмотра каталогов, /начиная с корня файловой системы.)

Есть ряд параметров, позволяющих приблизить выходную информацию к dir /S /A, но, должен признать, я не могу понять, как перевести /B.

Для получения полезной информации я бы попробовал: ls -lAFGR --si /

где

  • l = длинный список (как указано выше)
  • A = почти все файлы (не включая . и .. в каждом каталоге, но показывает все скрытые файлы)
  • F = показать индикатор файла (один из следующих: *для exe-файлов, /для каталогов, @для символических ссылок, |для FIFO, =для сокетов и >для дверей)
  • G = не показывать информацию о группе (удалите это, если хотите ее видеть)
  • R = рекурсивно перечислить каталоги (подкаталоги) и
  • --si = показать размер файла в удобном для чтения формате, например, 1M (где 1M = 1000B)

lsможет предоставить более простой для чтения обзор каталогов и файлов в этих каталогах, так как findвывод может быть трудно сканировать, когда файлы содержатся в очень длинных структурах каталогов (охватывающих несколько строк). Следствием этого является то, что каждый файл указан сам по себе (т. е. без информации о пути к каталогу), и вам, возможно, придется вернуться на пару страниц/экранов назад, чтобы найти каталоги, в которых находится определенный файл.

Кроме того, find не содержит информацию /A в команде DIR. Я предложил несколько атрибутов в показанной мной команде (которые по совпадению показывают дополнительную полезность, которую вы получаете от linux по сравнению с определенной проприетарной системой), но если вы прочитаете manи infoстраницы на ls, вы сможете увидеть, что включать, а что нет.

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