Quel est l'équivalent Unix (QNX) de la ligne de commande Windows «dir / s / b»


9

La question Quel est l'équivalent Linux de DOS "dir / s / b filename"? se rapproche, mais il termine la lecture d'une opération de recherche de fichier pour tous ces noms de fichiers nommés.

Je cherche cependant à faire une comparaison de contenu de répertoire avec un répertoire sur une machine Windows et à le comparer à ce qui devrait être un répertoire de construction similaire sur une boîte QNX . Je veux exécuter la commande d'énumération de répertoire sur les deux machines, faire une manipulation de fichier texte pour convertir les caractères délimitant le chemin et les lecteurs racine et quoi ne pas les mettre dans un format compatible pour un diff perspicace.

Je peux générer un manifeste de dossier de tous les sous-répertoires et fichiers qu'il contient dir /b /s, et obtenir une sortie formatée sous la forme d'un tas de chemins ...

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

Je peux voir dir /sdevient ls -R, mais comment obtenir l' /Béquivalent de la mise en forme de la sortie du chemin?


6
La réponse est la même que dans l'autre question, sauf que vous omettez l' -nameoption, donc elle ne filtre pas par nom.
Barmar

Réponses:


14

findpeut vous donner tout ce dont vous avez besoin. Il a un peu plus de surcharge car il effectue plus de tests que lsseul, mais si vous voulez les informations de chemin dans la sortie, cela peut être le moyen le plus simple d'y parvenir.

Si vous allez comparer deux systèmes, vous devriez probablement faire d'abord quelques modifications de texte, échanger \avec /et supprimer le C:préfixe. Triez ensuite les listes et utilisez diffpour repérer les modifications. sedsera votre ami ici. Faites un suivi avec un commentaire si vous le souhaitez aussi.


18

Il n'y a pas d'indicateur pour lsfaire ce que vous demandez, mais vous pouvez le faire avec plusieurs autres outils, le plus simple étant (peut-être) find:

find .

2
ou simplement find L'expression par défaut est.
user4556274

3
Vrai. Quoi qu'il en soit, je pense que c'est une bonne pratique d'inclure les valeurs par défaut dans les messages Q / A, car ils pourraient ne pas être évidents pour tout le monde.
Bruno9779

19
@ user4556274 Cela peut être pour GNU find, mais d'autres implémentations suivent la norme POSIX et nécessitent un opérande de répertoire.
Kusalananda

5

arbre -si

-i pour ne pas indenter -f pour imprimer le chemin


Intéressant, montrez une sortie de console à votre réponse; Je ne trouve pas cette commande dans ma boîte QNX-bash: tree: command not found
jxramos

Je suis sur mon téléphone, je ne peux donc pas le tester, mais il se trouve dans la page de manuel
Stephen C

1
C'est de mama.indstate.edu/users/ice/tree , et empaqueté comme treedans un certain nombre de distributions Linux.
deltab

treeest mon outil de choix pour inspecter la structure du répertoire, mais il n'est pas installé par défaut sur la plupart des systèmes.
Bruno9779

5

Pour obtenir le chemin réel préfixé (en supposant que c'est important), faites

find "$(pwd)"

Si vous utilisez un shell de type bash, pas besoin d'appeler une commande externe; find "${PWD}"devrait suffire. Je ne sais pas si cela fonctionne sur QNX, cependant.
un CVn le

@ MichaelKjörling: Eh bien, si vous voulez le chemin du lien symbolique plutôt que le vrai chemin ...
Joshua

Certes, cela pourrait dépendre de la sémantique exacte de chacun. N'oubliez pas qu'au moins GNU bash a aussi un intégré pwd/ externe / bin / pwd, qui diffèrent également dans la façon dont ils gèrent les répertoires atteints par les liens symboliques.
un CVn le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.