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 /s
oraz 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 /s
staje się ls -R
, ale jak uzyskać /B
ekwiwalent formatowania wyjściowego ścieżki?
-name
opcję, więc nie filtruje według nazwy.Odpowiedzi:
find
może dać ci wszystko, czego potrzebujesz. Ma nieco więcej narzutu, ponieważ wykonuje więcej testów niżls
sam, 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,diff
aby zauważyć zmiany.sed
będzie twoim przyjacielem tutaj. Kontynuuj z komentarzem, jeśli też tego chcesz.źródło
Nie ma flagi,
ls
która wykona to, o co prosisz, ale możesz to zrobić za pomocą kilku innych narzędzi, najłatwiejszym (prawdopodobnie)find
:źródło
find
Domyślnym wyrażeniem jest.
find
, ale inne implementacje są zgodne ze standardem POSIX i wymagają operandu katalogu.drzewo -if
-i nie wcina -f, aby wydrukować ścieżkę
źródło
-bash: tree: command not found
tree
w wielu dystrybucjach Linuksa.tree
jest moim wybranym narzędziem do sprawdzania struktury katalogów, ale nie jest instalowane domyślnie w większości systemów.Aby uzyskać prefiks rzeczywistej ścieżki (przy założeniu, że to ważne), wykonaj
źródło
find "${PWD}"
powinno wystarczyć. Nie jestem jednak pewien, czy to działa na QNX.pwd
a także zewnętrzne / bin / pwd, które również różnią się sposobem obsługi katalogów osiąganych przez dowiązania symboliczne.