Question Rendre ls sortie comme dir / b / s


Comment puis-je modifier la sortie de ls sous Linux pour qu'il ressemble à la sortie de la commande dir /b /s dans Windows?

dir /b /s sortie comme suit:

C:\MinGW>dir /s /b 
C:\MinGW\COPYING 
C:\MinGW\COPYING.LIB
C:\MinGW\doc 
C:\MinGW\include

4
2017-07-04 20:17


origine




Réponses:


find . -print

Cela devrait produire le même résultat que dir /s/b


5
2017-07-04 20:29



Pas assez. Les chemins sont affichés par rapport à ., ne pas /. find BACKTICKpwdBACKTICK -print travaillerait. Mais c'est un peu plus compliqué que de simplement utiliser ls et je ne pense pas que la conformité exacte à dirLe format de sortie est une exigence stricte. - sepp2k
@ sepp2k: Compte tenu de votre dernière phrase, je ne comprends pas pourquoi vous faites remarquer le premier. La recherche est un outil généralement beaucoup plus utile que ls pour les cas similaires.
@jrtokarz: Vous n'avez pas besoin du point ou de l'empreinte, ils sont la valeur par défaut, alors "trouvez".
@Roger: Je pense que le chemin de recherche est requis dans la plupart des cas find versions (sauf GNU). - grawity


ls -R liste tous les fichiers et sous-répertoires de manière récursive. Avec ls -R1 vous obtenez la même chose, mais un seul fichier par ligne.

Ni rend la sortie ressemble exactement à celle de dir /b /s, mais ça devrait être assez proche.


2
2017-07-04 20:24





ls -1

ou

ls -1d "$PWD"/*

2
2017-07-04 20:25



/S est l'équivalent dir de -R même si l'exemple de sortie de l'OP ne le rend pas clair. - sepp2k
ls -1 ne fonctionne pas de manière récursive (au besoin). ls -1R fonctionnerait de manière récursive, mais son résultat dir /s /b (qui montre les chemins absolus pour chaque fichier). ls -1d "${PWD}/* manque également deux choses: la récursivité et les fichiers normaux correspondants (votre -d limite la sortie aux répertoires uniquement). - - Kurt Pfeifle


Cela dépend de la difficulté d'obtenir une "équivalence" dir /b /s... Celles-ci sont assez proches (elles n'auront pas de barres obliques inverses comme séparateur de répertoires, et l'ordre de sortie sera un peu différent [dir /b /s affiche d'abord les répertoires «frères» avant de plonger dans chacun pour montrer leur contenu]). Le second est juste une solution de rechange au cas où votre version find ne par défaut pas à -print action (la plupart le font cependant):

find $(pwd)
find $(pwd) -print

METTRE À JOUR: J'ai eu une faute de frappe dans les commandes ci-dessus à l'origine. J'ai tapé les accolades "{}" au lieu des rondes "()". Grâce à grawity pour repérer cela.


1
2017-07-05 10:12



Ses $PWD, majuscule. - grawity
@grawity: vous avez raison et tort en même temps. $PWD ou ${PWD} renverrait le contenu d'un variable d'environnement (le répertoire actuel). C'est ce que vous avez en tête. pwd est un petit utilitaire en ligne de commande ('print working directory') qui affiche également le chemin du répertoire en cours. En l'utilisant comme ${pwd} ou comme pwd` retournerait le résultat de cette commande, qui dans ce cas a le même effet que d'utiliser $PWD. Donc, ma version fonctionnera certainement, et votre commentaire n'était pas approprié dans ce contexte. - Kurt Pfeifle
Correction: $(pwd) renvoie la sortie de pwd, et ${pwd} renvoie la valeur de $pwd. Notez la différence entre parenthèses. - grawity
@grawity: Oh! Vous avez raison bien sûr. (Je le fais correctement chaque fois que j'ai besoin de le faire dans un shell. Dieu sait pourquoi je l'ai mal fait en le tapant dans le champ d'édition de texte ....) Je corrigerai mes commentaires pour ne pas embrouiller les autres lecteurs. - Kurt Pfeifle


cela semble fonctionner, à partir de la ligne de commande:

find|awk "/^\.\//{print\"$PWD\"substr(\$0,2)}"

1
2017-10-30 09:58



Pourquoi ne pas simplement utiliser -printf au lieu? - Ignacio Vazquez-Abrams
Parce que je suis nouveau et que je fais les choses à la dure. J'ai ajouté cette ligne à mon .bashrc qui semble faire l'affaire: alias lsb='find . -printf "$PWD/%P\n"' C'est ce que tu veux dire? Merci pour le conseil! - erik