Вопрос: Выполнение вывода ls как dir / b / s


Как я могу настроить выход ls в Linux, чтобы он выглядел как вывод команды dir /b /s в Windows?

dir /b /s выход следующим образом:

C:\MinGW>dir /s /b 
C:\MinGW\COPYING 
C:\MinGW\COPYING.LIB
C:\MinGW\doc 
C:\MinGW\include

4
2017-07-04 20:17


Источник




Ответы:


find . -print

Это должно давать тот же результат, что и dir /s/b


5
2017-07-04 20:29



Не совсем. Пути отображаются относительно ., а не /, find BACKTICKpwdBACKTICK -print должно сработать. Но это немного сложнее, чем просто использовать ls и я не думаю, что точное соответствие dirФормат вывода является строгим требованием. - sepp2k
@ sepp2k: Учитывая ваше последнее предложение, я смущен, почему вы указываете первое. Найти, как правило, гораздо более полезный инструмент, чем ls для подобных случаев.
@jrtokarz: вам не нужна точка или -print, они по умолчанию, поэтому просто «найдите».
@Roger: Я считаю, что путь поиска требуется в большинстве find версии (кроме GNU). - grawity


ls -R перечисляет все файлы и подкаталоги рекурсивно. С ls -R1 вы получаете то же самое, но только один файл в строке.

Не делает вывод так же, как и у dir /b /s, но он должен быть достаточно близко.


2
2017-07-04 20:24





ls -1

или

ls -1d "$PWD"/*

2
2017-07-04 20:25



/S является эквивалентом dir -R даже если вывод примера OP не делает это ясным. - sepp2k
ls -1 не работает рекурсивно (по мере необходимости). ls -1R будет работать рекурсивно, но его выход будет выглядеть совсем по-другому dir /s /b (который показывает абсолютные пути для каждого файла). ls -1d "${PWD}/* также пропускает две вещи: рекурсию и соответствующие нормальные файлы (ваш -d ограничивает вывод только на каталоги). - - Kurt Pfeifle


Это зависит от того, насколько сложно требовать «эквивалентности» dir /b /s... Они близки (они не будут иметь обратную косую черту как разделитель каталогов, а порядок вывода будет немного другим [dir /b /s сначала выводит «sibling» каталоги, прежде чем погрузиться в каждый, чтобы показать их содержимое]). Второй - это просто резерв в случае, если ваша версия find не по умолчанию -print действие (в большинстве случаев):

find $(pwd)
find $(pwd) -print

ОБНОВИТЬ: Первоначально у меня была опечатка в командах. Я набрал фигурные скобки «{}« вместо круглых »()« как они должны быть. Благодаря grawity для определения этого.


1
2017-07-05 10:12



Это $PWD, верхний регистр. - grawity
@grawity: вы правы и неправы одновременно. $PWD или ${PWD} вернет содержимое переменная среды (текущий каталог). Это то, что вы имеете в виду. pwd это небольшая утилита командной строки ('print working directory'), которая также выводит текущий путь к каталогу. Используя его как ${pwd} или как `pwd` вернет результат этой команды, что в этом случае имеет тот же эффект, что и использование $PWD, Поэтому моя версия, безусловно, будет работать, и ваш комментарий не подходит в этом контексте. - Kurt Pfeifle
Исправление: $(pwd) возвращает выход pwd, а также ${pwd} возвращает значение $pwd, Обратите внимание на разницу в скобках. - grawity
@grawity: D'oh! Вы правы, конечно. (Я делаю это правильно, когда мне нужно сделать это в оболочке. Небеса знают, почему я сделал это неправильно, когда набрал его в поле редактирования текста ....) Я исправлю свои комментарии, чтобы он не путал других читателей. - Kurt Pfeifle


это, похоже, работает из командной строки:

find|awk "/^\.\//{print\"$PWD\"substr(\$0,2)}"

1
2017-10-30 09:58



Почему бы вам не просто использовать -printf вместо? - Ignacio Vazquez-Abrams
Потому что я новичок и делаю что-то трудное. Я добавил эту строку к моему .bashrc который, кажется, делает трюк: alias lsb='find . -printf "$PWD/%P\n"' Это то, что вы имеете в виду? Спасибо за совет! - erik