Что такое Unix (QNX) эквивалент командной строки Windows «dir / s / b»

9

Вопрос Что такое Linux-эквивалент DOS «dir / s / b filename»? подходит близко, но заканчивается воспроизведение операции поиска файла для всех таких именованных имен файлов.

Тем не менее, я хочу сделать сравнение содержимого каталога с каталогом на компьютере с Windows и сравнить его с тем, что должно быть аналогичным образом созданным каталогом в окне QNX . Я хочу запустить команду перечисления каталогов на обоих компьютерах, выполнить некоторые манипуляции с текстовыми файлами, чтобы преобразовать символы разграничения пути и корневые диски, а что нет, чтобы получить их в совместимом формате для проницательного сравнения.

Я могу сгенерировать манифест папки со всеми подкаталогами и файлами в нем dir /b /s, и получить выходные данные, отформатированные в виде набора путей ...

c:\Temp>dir /b /s
c:\Temp\Subfolder1
C:\Temp\Subfolder1\File1.txt
C:\Temp\Subfolder1\File2.txt
...

Я вижу, dir /sстановится ls -R, но как мне получить /Bэквивалент форматирования выходной путь?

jxramos
источник
6
Ответ такой же, как и в другом вопросе, за исключением того, что вы пропускаете -nameопцию, поэтому она не фильтруется по имени.
Бармар

Ответы:

14

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

Если вы собираетесь сравнить две системы, то вы , вероятно , следует сделать некоторые редактирования текста первой и своп \с /, и удалить C:префикс. Затем отсортируйте списки и используйте, diffчтобы определить изменения. sedбудет вашим другом здесь. Если вы хотите этого, оставьте комментарий.

Эд Невилл
источник
18

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

find .
Bruno9779
источник
2
или просто find выражение по умолчанию.
user4556274
3
Правда. В любом случае, я считаю хорошей практикой включать значения по умолчанию в сообщения Q / A, поскольку они могут быть не очевидны для всех.
Bruno9779
19
@ user4556274 Это может быть для GNU find, но другие реализации следуют стандарту POSIX и требуют операнда каталога.
Кусалананда
5

дерево-если

-i не отступать -f выводить путь

гость
источник
Интересно, покажи какой-нибудь консольный вывод на свой ответ; Я не могу найти эту команду из своего окна QNX-bash: tree: command not found
jxramos
Я разговариваю по телефону, поэтому не могу его проверить, но он находится на странице man на linux.die.net/man/1/tree
Стивен С.
1
Это из mama.indstate.edu/users/ice/tree , и упаковано, как treeв ряде дистрибутивов Linux.
17
treeмой инструмент выбора для проверки структуры каталогов, но он не установлен по умолчанию в большинстве систем.
Bruno9779
5

Чтобы получить реальный путь с префиксом (при условии, что это важно), выполните

find "$(pwd)"
Джошуа
источник
Если вы используете оболочку, похожую на bash, нет необходимости вызывать внешнюю команду; find "${PWD}"должно быть достаточно. Не уверен, что это работает на QNX, хотя.
CVn
@ MichaelKjörling: Хорошо, если вы хотите путь символической ссылки, а не реальный путь ...
Джошуа
Правда, это может зависеть от точной семантики каждого из них. Не забывайте, что по крайней мере в GNU bash есть как встроенный, pwdтак и внешний / bin / pwd, которые также отличаются тем, как они обрабатывают каталоги, доступные по символическим ссылкам.
CVn