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?


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.


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 .

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ę


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)"

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.