Qual è l'equivalente Unix (QNX) della riga di comando di Windows "dir / s / b"


9

La domanda Qual è l'equivalente Linux di DOS "dir / s / b nomefile"? si avvicina ma finisce per riprodurre un'operazione di ricerca di file per tutti questi nomi di file.

Sto comunque cercando di fare un confronto diff dei contenuti di una directory con una directory su una macchina Windows e confrontarla con quella che dovrebbe essere una directory costruita in modo simile su una scatola QNX . Voglio eseguire il comando di enumerazione delle directory su entrambe le macchine, fare qualche manipolazione dei file di testo per convertire i caratteri che delimitano il percorso e le unità root e cosa non farli in un formato compatibile per un diff perspicace.

Posso generare una cartella manifest di tutte le sottodirectory e i file in essa contenuti dir /b /se ottenere l'output formattato come un insieme di percorsi ...

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

Posso vedere dir /sdiventa ls -R, ma come posso ottenere l' /Bequivalente della formattazione dell'output del percorso?


6
La risposta è la stessa dell'altra domanda, tranne che si esclude l' -nameopzione, quindi non filtra per nome.
Barmar,

Risposte:


14

findpuò darti tutto ciò di cui hai bisogno. Ha un po 'più di sovraccarico in quanto esegue più test che lsda soli, ma se si desidera le informazioni sul percorso nell'output, questo potrebbe essere il modo più semplice per ottenerlo.

Se avete intenzione di confrontare due sistemi, allora probabilmente si dovrebbe fare un po 'di testo modifica prima e scambiare \con /, e rimuovere il C:prefisso. Quindi ordinare gli elenchi e utilizzare diffper individuare le modifiche. sedsarà tuo amico qui. Se lo desideri, segui un commento.


18

Non esiste una bandiera per lscui farà ciò che chiedi, ma puoi realizzarla con molti altri strumenti, l'essere più semplice (possibilmente) find:

find .

2
o semplicemente find L'espressione predefinita è.
user4556274,

3
Vero. Ad ogni modo, penso che sia una buona pratica includere valori predefiniti nei post Q / A, in quanto potrebbero non essere ovvi per tutti.
Bruno9779,

19
@ user4556274 Potrebbe essere per GNU find, ma altre implementazioni seguono lo standard POSIX e richiedono un operando di directory.
Kusalananda

5

albero -if

-i per non rientrare -f per stampare il percorso


Interessante, mostra alcuni output della console alla tua risposta; Non riesco a trovare quel comando dalla mia casella QNX-bash: tree: command not found
jxramos,

Sono sul mio telefono, quindi non posso provarlo, ma è nella pagina man su linux.die.net/man/1/tree
Stephen C

1
Viene da mama.indstate.edu/users/ice/tree e confezionato come treein una serie di distribuzioni Linux.
Delta

treeè il mio strumento preferito per ispezionare la struttura delle directory, ma non è installato di default sulla maggior parte dei sistemi.
Bruno9779,

5

Per ottenere il prefisso del percorso effettivo (supponendo che sia importante), fallo

find "$(pwd)"

Se si utilizza una shell simile a bash, non è necessario richiamare un comando esterno; find "${PWD}"dovrebbe essere abbastanza. Non sono sicuro che funzioni su QNX, comunque.
un CVn

@ MichaelKjörling: Beh, se vuoi il percorso del link simbolico piuttosto che il percorso reale ...
Joshua,

È vero, potrebbe dipendere dalla semantica esatta di ciascuno. Non dimenticare che almeno GNU bash ha un built-in pwde anche il file esterno / bin / pwd, che differiscono anche nel modo in cui gestiscono le directory raggiunte dai collegamenti simbolici.
un CVn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.