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?

jxramos
la source
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.

Ed Neville
la source
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 .
Bruno9779
la source
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

Client
la source
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)"
Joshua
la source
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