Was ist das Unix (QNX) -Äquivalent der Windows-Befehlszeile "dir / s / b"?


9

Die Frage Was ist das Linux-Äquivalent von DOS "dir / s / b Dateiname"? kommt nahe, aber es wird eine Dateisuchoperation für alle benannten Dateinamen abgespielt.

Ich möchte jedoch einen Verzeichnisinhaltsdifferenzvergleich mit einem Verzeichnis auf einem Windows-Computer durchführen und ihn mit einem ähnlich aufgebauten Verzeichnis auf einer QNX- Box vergleichen. Ich möchte den Befehl zum Auflisten von Verzeichnissen auf beiden Computern ausführen, einige Textdateibearbeitungen durchführen, um Pfadbegrenzungszeichen und Stammlaufwerke zu konvertieren und was nicht, um sie für ein aufschlussreiches Diff in ein kompatibles Format zu bringen.

Ich kann ein Ordnermanifest aller darin enthaltenen Unterverzeichnisse und Dateien generieren dir /b /sund die Ausgabe als eine Reihe von Pfaden formatieren lassen ...

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

Ich kann sehen, dir /swird ls -R, aber wie bekomme ich das /BÄquivalent der Pfadausgabeformatierung?


6
Die Antwort ist dieselbe wie in der anderen Frage, außer dass Sie die -nameOption weglassen, damit nicht nach Namen gefiltert wird.
Barmar

Antworten:


14

findkann Ihnen alles geben, was Sie brauchen. Es hat etwas mehr Overhead, da es mehr Tests als lsalleine durchführt. Wenn Sie jedoch die Pfadinformationen in der Ausgabe haben möchten, ist dies möglicherweise der einfachste Weg, dies zu erreichen.

Wenn Sie vorhaben , zwei Systeme vergleichen zu können , dann sollten Sie vielleicht einen Text tun Bearbeitung ersten und Swap \mit /, und das entfernen C:Präfix. Sortieren Sie dann die Listen und differkennen Sie die Änderungen. sedwird dein Freund hier sein. Folgen Sie mit einem Kommentar, wenn Sie dies auch wollen.


18

Es gibt keine Flagge, für lsdie das getan wird, wonach Sie fragen, aber Sie können dies mit mehreren anderen Tools erreichen. Das einfachste ist (möglicherweise) find:

find .

2
oder einfach find Der Standardausdruck ist.
user4556274

3
Wahr. Auf jeden Fall halte ich es für eine gute Praxis, Standardeinstellungen in Q / A-Posts aufzunehmen, da diese möglicherweise nicht für alle offensichtlich sind.
Bruno9779

19
@ user4556274 Möglicherweise für GNU find, andere Implementierungen folgen jedoch dem POSIX-Standard und erfordern einen Verzeichnisoperanden.
Kusalananda

5

Baum -if

-i um nicht einzurücken -f um den Pfad zu drucken


Interessant, zeigen Sie einige Konsolenausgaben zu Ihrer Antwort; Ich kann diesen Befehl nicht von meiner QNX-Box finden-bash: tree: command not found
jxramos

Ich bin auf meinem Handy, kann es also nicht testen, aber es befindet sich auf der Manpage unter linux.die.net/man/1/tree
Stephen C

1
Es stammt von mama.indstate.edu/users/ice/tree und ist wie treein einer Reihe von Linux-Distributionen verpackt .
Deltab

treeist mein bevorzugtes Tool zur Überprüfung der Verzeichnisstruktur, wird jedoch auf den meisten Systemen nicht standardmäßig installiert.
Bruno9779

5

Tun Sie dies, um den tatsächlichen Pfad mit dem Präfix zu erhalten (vorausgesetzt, dies ist wichtig)

find "$(pwd)"

Wenn Sie eine Bash-ähnliche Shell verwenden, müssen Sie keinen externen Befehl aufrufen. find "${PWD}"sollte genug sein. Ich bin mir jedoch nicht sicher, ob dies unter QNX funktioniert.
Ein

@ MichaelKjörling: Nun, wenn Sie den Symlink-Pfad anstatt des realen Pfades wollen ...
Joshua

Es ist wahr, es könnte von der genauen Semantik jedes einzelnen abhängen. Vergessen Sie nicht, dass zumindest GNU bash sowohl ein integriertes pwdals auch externes / bin / pwd hat, die sich auch darin unterscheiden, wie sie mit Verzeichnissen umgehen, die über Symlinks erreicht werden.
Ein Lebenslauf vom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.