Список файлов рекурсивно, в алфавитном порядке и без строк, которые показывают исключительно имена папок

Возможно, вы захотите приобрести что-то вроде этого , главным образом потому, что это также уменьшит количество кошачьей шерсти, попадающей на клавиатуру. Вам нужно потратить немного денег, но в качестве дополнительных бонусов вам не нужно нажимать комбинацию клавиш, запускать приложение или поддерживать приложение в рабочем состоянии, оно работает на любой ОС, и вы все равно можете использовать свою клавиатуру, пока ваша кошка там.

Также я хотел прокомментировать предложение открыть vim, но, видимо, у меня пока недостаточно репутации для этого. К сожалению, Ctrl и Z расположены слишком близко друг к другу, поэтому кошка может легко перевести vim в фоновый режим и получить немедленный доступ к оболочке.

2
27.10.2019, 11:40
3 ответа

Должно быть достаточно портативным:

find. -type f | sort

Если ваши входные данные содержат файлы с новыми строками в имени, я считаю, что это должно лучше обрабатывать их (спасибо Кусалананде за указание на этот возможный сценарий):

find. -type f -print0 | sort -z | tr '\0' '\n'
0
27.01.2020, 22:24

Использование оболочки zsh:

print -C1 **/*(.DN)

В оболочке zshэто напечатает результат расширения заданного шаблона подстановки в один столбец (это то, что делает print -C1). Шаблон **/*(.DN)заменяется на пути ко всем обычным файлам (, а не к каталогам и т. д.; это то, что квалификатор glob (.)делает )в текущем каталоге или ниже него. По умолчанию они будут располагаться в лексикографическом порядке. Квалификатор (DN)glob имеет тот же эффект, что и установки dotglobи nullglob, соответственно, в оболочке bash(, т. е. он заставляет шаблон соответствовать скрытым именам, а также заставляет его вообще не расширяться, если он ничего не соответствует ).

Вместо (.)для вывода списка только обычных файлов можно было бы использовать (^/)для вывода списка не -каталогов.

В bashвы можете сделать что-то подобное с

shopt -s globstar dotglob nullglob
for pathname in **/*; do
    [[ ! -d $pathname ]] && printf '%s\n' "$pathname"
done

, который рекурсивно печатает лексикографически отсортированные пути ко всем не -каталогам (, включая скрытые файлы ).

1
27.01.2020, 22:24

Если вы хотите вывести список всех файлов во всех подкаталогах -из вашего текущего каталога и отсортировать по имени файла, используйте команду find.

find. -type f -exec basename {} \; | sort
-1
27.01.2020, 22:24

Теги

Похожие вопросы