Co to jest odpowiednik Uniksa (QNX) wiersza polecenia systemu Windows „dir / s / b”

9

Pytanie Jaki jest odpowiednik DOS „nazwa pliku dir / s / b” dla systemu Linux? jest blisko, ale kończy się odtwarzaniem operacji wyszukiwania plików dla wszystkich nazwanych nazw plików.

Chcę jednak dokonać porównania różnic zawartości katalogu z katalogiem na komputerze z systemem Windows i porównać go z tym, co powinien być podobnie skonstruowanym katalogiem na urządzeniu QNX . Chcę uruchomić polecenie wyliczania katalogów na obu komputerach, wykonać pewne operacje na plikach tekstowych, aby przekonwertować znaki ograniczające ścieżki i dyski główne i co zrobić, aby nie uzyskać ich w kompatybilnym formacie dla wnikliwego porównania.

Mogę wygenerować manifest folderu dla wszystkich podkatalogów i plików w nim dir /b /soraz uzyskać dane wyjściowe sformatowane jako wiązka ścieżek ...

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

Widzę, że dir /sstaje się ls -R, ale jak uzyskać /Bekwiwalent formatowania wyjściowego ścieżki?

jxramos
źródło
6
Odpowiedź jest taka sama jak w drugim pytaniu, z tą różnicą, że pomijasz -nameopcję, więc nie filtruje według nazwy.
Barmar

Odpowiedzi:

14

findmoże dać ci wszystko, czego potrzebujesz. Ma nieco więcej narzutu, ponieważ wykonuje więcej testów niż lssam, ale jeśli chcesz uzyskać informacje o ścieżce w danych wyjściowych, może to być najprostszy sposób na osiągnięcie tego.

Jeśli masz zamiar porównać dwa systemy, to powinieneś zrobić kilka edycji tekstu pierwszy i wymiany \z /, i usunąć C:prefiks. Następnie posortuj listy i użyj, diffaby zauważyć zmiany. sedbędzie twoim przyjacielem tutaj. Kontynuuj z komentarzem, jeśli też tego chcesz.

Ed Neville
źródło
18

Nie ma flagi, lsktóra wykona to, o co prosisz, ale możesz to zrobić za pomocą kilku innych narzędzi, najłatwiejszym (prawdopodobnie) find:

find .
Bruno9779
źródło
2
lub po prostu find Domyślnym wyrażeniem jest.
user4556274
3
Prawdziwe. W każdym razie uważam, że dobrą praktyką jest dołączanie wartości domyślnych do postów Q / A, ponieważ mogą nie być oczywiste dla wszystkich.
Bruno9779,
19
@ user4556274 Może to być GNU find, ale inne implementacje są zgodne ze standardem POSIX i wymagają operandu katalogu.
Kusalananda
5

drzewo -if

-i nie wcina -f, aby wydrukować ścieżkę

Gość
źródło
Interesujące, pokaż kilka odpowiedzi konsoli na swoją odpowiedź; Nie mogę znaleźć tego polecenia z mojej skrzynki QNX-bash: tree: command not found
jxramos
Jestem na swoim telefonie, więc nie mogę go przetestować, ale znajduje się on na stronie man pod linux.die.net/man/1/tree
Stephen C
1
Pochodzi z mama.indstate.edu/users/ice/tree i jest spakowany jak treew wielu dystrybucjach Linuksa.
deltab
treejest moim wybranym narzędziem do sprawdzania struktury katalogów, ale nie jest instalowane domyślnie w większości systemów.
Bruno9779,
5

Aby uzyskać prefiks rzeczywistej ścieżki (przy założeniu, że to ważne), wykonaj

find "$(pwd)"
Jozuego
źródło
Jeśli używasz powłoki typu bash, nie musisz wywoływać zewnętrznego polecenia; find "${PWD}"powinno wystarczyć. Nie jestem jednak pewien, czy to działa na QNX.
CVn
@ MichaelKjörling: Cóż, jeśli chcesz ścieżkę dowiązania symbolicznego zamiast prawdziwej ...
Joshua
To prawda, że ​​może zależeć od dokładnej semantyki każdego z nich. Nie zapominaj, że przynajmniej GNU bash ma wbudowane, pwda także zewnętrzne / bin / pwd, które również różnią się sposobem obsługi katalogów osiąganych przez dowiązania symboliczne.
CVn