Как я могу заставить ls выдавать плоский список рекурсивных путей по одной строке?
Например, я просто хочу плоский список файлов с их полными путями:
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt
ls -a1
почти делает то, что мне нужно, но я не хочу фрагменты пути, я хочу полные пути.
bash
command-line
find
ls
dreftymac
источник
источник
Ответы:
Если вы действительно хотите использовать
ls
, то отформатируйте вывод, используя awk:источник
awk
выражения?Используйте find:
Если вам нужны только файлы (не указывайте каталоги, устройства и т. Д.):
источник
ls
параметры типа--sort=extension
"выкупить" этим решением?ls -ld $(find .)
если вы хотите отсортировать вывод по времени модификации:
ls -ltd $(find .)
источник
--sort=extension
параметрls
find . -name "*" -exec ls -ld '{}' \;
(этот работает независимо от количества файлов), но ваша команда намного короче для записи;)find . -ls
.Попробуйте следующий более простой способ:
источник
find "`pwd`"
если путь содержит пробелы или некоторые другие специальные символы.find .
? -.-pwd
, он выведет абсолютные пути. Кстати, "Чем это отличается отfind
" ;-)Лучшая команда это:
tree -fi
Чтобы использовать файлы, но не ссылки, вы должны удалить
>
из вывода:Если вы хотите знать природу каждого файла (например, для чтения только файлов ASCII) с двумя
while
s:источник
tree
!brew install tree
, учитывая, что вы используете homebrewО, действительно длинный список ответов. Это очень помогло и, наконец, я создал свой собственный, который я искал:
Чтобы вывести список всех файлов в каталоге и его подкаталогах:
Чтобы вывести список всех каталогов в каталоге и его подкаталогах:
Чтобы вывести список всех каталогов и файлов в каталоге и его подкаталогах:
источник
find "$PWD" -type f | grep '\.json$'
Я не знаю о полном пути, но вы можете использовать
-R
для рекурсии. Кроме того, если вы не склонныls
, вы можете просто сделатьfind *
.источник
Не используя никаких внешних команд, кроме ls:
источник
Удобно для некоторых ограниченных оболочек устройства, где поиск / локализация недоступны.
источник
awk
?найти / сделает свое дело
источник
Не усложняй. Я просто использовал это и получил красивый вывод:
источник
ls -lR
не достиг бы этой цели.Самый простой способ для всех вас, будущих людей, это просто:
Это, однако, также показывает размер содержимого каждой папки. Вы можете использовать awk для вывода только имени папки:
Edit- Извините, мой плохой. Я думал, что это были только папки, которые были необходимы. Я оставлю это здесь на всякий случай, если кому-то понадобится в будущем ...
источник
Имея свободу использования всех возможных опций ls:
find -type f | xargs ls -1
источник
Я думаю, что для плоского списка лучший способ:
(или для того, чтобы сохранить его в текстовом файле)
источник
find: illegal option -- D
Запустите команду bash в следующем формате:
источник
Вот частичный ответ, который показывает имена каталогов.
Объяснение:
ls -mR *
перечисляет полные имена каталогов, заканчивающиеся на ':', затем перечисляет файлы в этом каталоге отдельноsed -n 's/://p'
находит строки, оканчивающиеся на двоеточие, снимает двоеточие и печатает строкуПеребирая список каталогов, мы также сможем найти каталоги. Все еще работаю над этим. Получать подстановочные знаки через xargs сложно.
источник
Добавление подстановочного знака в конец каталога ls приводит к полному пути. Прямо сейчас у вас есть это:
Вы можете сделать это вместо этого:
К сожалению, это не выводит полный путь к каталогам, в которые возвращаются, поэтому, возможно, это не то полное решение, которое вы ищете.
источник
Я вижу много ответов. Это мое, и я считаю весьма полезным, если вы работаете на Mac.
Я уверен, что вы знаете, что есть несколько « пакетных » файлов ( .app , .rtfd , .workflow и т. Д.). И глядя в окно Finder, они кажутся отдельными файлами. Но это не так. И
$ ls
или$ find
рассматривать их как каталоги ... Итак, если вам не нужно перечислять их содержимое, это работает для меня:Конечно, это для рабочего каталога, и вы можете добавить расширения других пакетов (но всегда с
/
последующим после них). Или любые другие расширения, если не пакет без/
.Скорее интересное "
.lpdf/
" (многоязычный pdf). У него нормальное ".pdf
" расширение (!!) или нет в Finder. Таким образом, вы получите (или он просто считает 1 файл) за это,pdf
а не кучу вещей ...источник
ls -lR
это то, что вы искали, или, по крайней мере, я был. ураисточник
ls -lR
не достиг бы этой цели.Если каталог передается как относительный путь, и вам нужно преобразовать его в абсолютный путь перед вызовом find. В следующем примере каталог передается в качестве первого параметра в сценарий:
источник
readlink
вы можете сделать этоdirectory=$(readlink -e $1)
readlink
на OS X 10.5.8 не поддерживает опцию -e.Это медленно, но работает рекурсивно и печатает как каталоги, так и файлы. Вы можете передать его с помощью awk / grep, если вам нужны имена файлов без всей остальной информации / каталогов:
источник
@ ghostdog74: немного подправить свое решение.
Следующий код может быть использован для поиска файла с полным абсолютным путем.
источник
Я знал имя файла, но также хотел каталог.
найти $ PWD | имя файла
отлично работал в Mac OS 10.12.1
источник