Здійснення виводу ls як dir / b / s


4

Як я можу налаштувати вихід 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

Відповіді:


6
find . -print

Це повинно дати такий же вихід, як і dir /s/b


Не зовсім. Шляхи відображаються відносно ., не /. find BACKTICKpwdBACKTICK -printпрацював би. Але це трохи складніше, ніж просто використання, lsі я не думаю, що точне відповідність dirвихідному формату є суворою вимогою.
sepp2k

@ sepp2k: Враховуючи ваше останнє речення, я збентежений, чому ви вказуєте перше. Find - це, як правило, набагато корисніший інструмент, ніж ls у випадках, подібних до цього.

@jrtokarz: Вам не потрібна крапка або -принт, вони за замовчуванням, тому просто "знайдіть".

@Roger: Я вважаю, що шлях пошуку потрібен у більшості findверсій (крім GNU).
grawity

2

ls -Rперераховує всі файли та підкаталоги рекурсивно. З ls -R1вами ви отримуєте однаковий, але лише один файл у рядку.

Вихідні дані не виглядають так, як dir /b /s, але вони повинні бути досить близькими.


2
ls -1

або

ls -1d "$PWD"/*

/Sє рівноцінним еквівалентом, -Rнавіть якщо приклад прикладу OP не дає цього зрозуміти.
sepp2k

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

1

Це залежить від того , наскільки важко вимоги, щоб отримати «еквівалентність» до dir /b /s... Ці ті приходять досить близько (вони не будуть мати ніяких зворотні косі рис як роздільник каталогів , хоча, і порядок виведення буде трохи по- іншому [ dir /b /sкаталогами виводить «» Sibling першим , перш ніж зануритися в кожен, щоб показати їх вміст]). Другий - це лише резервний випадок, якщо ваша версія findне за замовчуванням -printдіє (хоча більшість робить):

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

ОНОВЛЕННЯ: Спочатку вводився помилка друку у вищезазначених командах. Я набрав фігурні дужки "{}" замість круглих "()", як вони повинні бути. Завдяки пишноті за те, що це помітили .


1
Це $PWD, великі регістри.
grawity

@grawity: ви одночасно маєте рацію та неправильність. $PWDабо ${PWD}повертав би вміст змінної середовища (поточний каталог). Це ви маєте на увазі. pwdце невелика утиліта командного рядка ("робочий каталог друку"), яка також видає поточний шлях до каталогу. Використання його як ${pwd}або як `pwd` поверне результат цієї команди , що в цьому випадку має такий же ефект, як і використання $PWD. Тож моя версія обов'язково спрацює, і ваш коментар не був відповідним у цьому контексті.
Курт Пфайфл

2
Виправлення: $(pwd)повертає вихід pwdі ${pwd}повертає значення $pwd. Зауважте різницю в дужках.
grawity

@grawity: D'oh! Ти прав, звичайно. (Я це роблю правильно, коли мені потрібно робити це в оболонці. Небеса знають, чому я зробив це неправильно, набравши його в поле редагування тексту ....) Я виправлю свої коментарі, щоб це не бентежило інших читачів.
Курт Пфайфл

1

це здається, що працює з командного рядка:

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

Чому б ви не просто використали -printfнатомість?
Ігнасіо Васкес-Абрамс

Тому що я новачок і все роблю важко. Я додав цей рядок до мого, .bashrcякий, здається, робить трюк: alias lsb='find . -printf "$PWD/%P\n"'це ви маєте на увазі? Дякую за пораду!
erik
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.