Comment puis-je faire en sorte que ls crache une liste plate de chemins récursifs un par ligne?
Par exemple, je veux juste une liste plate de fichiers avec leurs chemins d'accès complets:
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt
ls -a1
fait presque ce dont j'ai besoin, mais je ne veux pas de fragments de chemin, je veux des chemins complets.
bash
command-line
find
ls
dreftymac
la source
la source
Réponses:
Si vous voulez vraiment l'utiliser
ls
, formatez sa sortie en utilisant awk:la source
awk
expressions ci-dessus ?Utilisez find:
Si vous ne voulez que des fichiers (omettez les répertoires, les périphériques, etc.):
la source
ls
paramètres comme--sort=extension
"rachetés" par cette solution?ls -ld $(find .)
si vous souhaitez trier votre sortie par heure de modification:
ls -ltd $(find .)
la source
--sort=extension
paramètre dels
find . -name "*" -exec ls -ld '{}' \;
(celle-ci fonctionne quel que soit le nombre de fichiers), mais votre commande est beaucoup plus courte à écrire;)find . -ls
.Essayez la méthode plus simple suivante:
la source
find "`pwd`"
si le chemin contient des espaces ou d'autres caractères spéciaux.find .
? -.-pwd
pour commencer, il imprimera les chemins absolus. Au fait, "En quoi est-ce différent defind
" ;-)La meilleure commande est:
tree -fi
Pour utiliser les fichiers mais pas les liens, vous devez supprimer
>
de votre sortie:Si vous souhaitez connaître la nature de chaque fichier, (pour lire uniquement les fichiers ASCII par exemple) avec deux
while
s:la source
tree
!brew install tree
, étant donné que vous utilisez homebrewOh, vraiment une longue liste de réponses. Cela m'a beaucoup aidé et finalement, j'ai créé le mien que je cherchais:
Pour répertorier tous les fichiers d'un répertoire et de ses sous-répertoires:
Pour répertorier tous les répertoires d'un répertoire et de ses sous-répertoires:
Pour répertorier tous les répertoires et fichiers d'un répertoire et de ses sous-répertoires:
la source
find "$PWD" -type f | grep '\.json$'
Je ne connais pas le chemin complet, mais vous pouvez utiliser
-R
pour la récursivité. Alternativement, si vous n'êtes pas déterminéls
, vous pouvez simplement le fairefind *
.la source
N'utiliser aucune commande externe autre que ls:
la source
Pratique pour certains boîtiers d'appareils limités où la recherche / localisation n'est pas disponible.
la source
awk
?trouver / fera l'affaire
la source
Ne compliquez pas les choses. Je viens de l'utiliser et j'ai obtenu une belle sortie:
la source
ls -lR
n'atteindrait pas cet objectif.La façon la plus simple pour vous tous, futurs gens, est simplement:
Cependant, cela montre également la taille de ce qui est contenu dans chaque dossier.Vous pouvez utiliser awk pour afficher uniquement le nom du dossier:
Edit- Désolé désolé, ma mauvaise. Je pensais que seuls les dossiers étaient nécessaires. Je vais laisser ça ici au cas où quelqu'un à l'avenir en aurait besoin de toute façon ...
la source
Avec la liberté d'utiliser toutes les options ls possibles:
find -type f | xargs ls -1
la source
Je pense que pour une liste plate, la meilleure façon est:
(ou pour l'enregistrer dans un fichier txt)
la source
find: illegal option -- D
Exécutez une commande bash au format suivant:
la source
Voici une réponse partielle qui montre les noms de répertoire.
Explication:
ls -mR *
répertorie les noms de répertoire complets se terminant par un «:», puis répertorie les fichiers dans ce répertoire séparémentsed -n 's/://p'
trouve les lignes qui se terminent par deux points, enlevez les deux points et imprimez la ligneEn parcourant la liste des répertoires, nous devrions également pouvoir trouver les répertoires. Je travaille toujours dessus. C'est un défi d'obtenir les caractères génériques à travers les xargs.
la source
L'ajout d'un caractère générique à la fin d'un répertoire ls force les chemins d'accès complets. En ce moment, vous avez ceci:
Vous pouvez le faire à la place:
Malheureusement, cela n'imprime pas le chemin complet des répertoires récurrents, il ne s'agit donc peut-être pas de la solution complète que vous recherchez.
la source
Beaucoup de réponses que je vois. C'est le mien, et je pense que c'est très utile si vous travaillez sur Mac.
Je suis sûr que vous savez qu'il existe des fichiers "bundle" ( .app , .rtfd , .workflow , etc.). Et en regardant la fenêtre du Finder, ils semblent des fichiers uniques. Mais ce n'est pas le cas. Et
$ ls
ou$ find
voyez-les comme des répertoires ... Donc, à moins que vous n'ayez besoin de répertorier également leur contenu, cela fonctionne pour moi:Bien sûr, c'est pour le répertoire de travail, et vous pouvez ajouter d'autres extensions de bundles (mais toujours avec un
/
après eux). Ou toute autre extension si ce n'est pas un bundle sans le/
.Plutôt intéressant le "
.lpdf/
" (pdf multilingue). Il a une.pdf
extension " " normale (!!) ou aucune dans le Finder. De cette façon, vous obtenez (ou il ne compte qu'un seul fichier) pour celapdf
et pas un tas de choses…la source
ls -lR
c'est ce que vous cherchiez, ou du moins j'étais. à votre santéla source
ls -lR
n'atteindrait pas cet objectif.Si le répertoire est passé en tant que chemin relatif et que vous devrez le convertir en chemin absolu avant d'appeler find. Dans l'exemple suivant, le répertoire est transmis en tant que premier paramètre au script:
la source
readlink
vous pouvez le fairedirectory=$(readlink -e $1)
readlink
sous OS X 10.5.8 ne prend pas en charge l'option -e.Ceci est lent mais fonctionne récursivement et imprime à la fois les répertoires et les fichiers. Vous pouvez le diriger avec awk / grep si vous voulez juste les noms de fichiers sans toutes les autres informations / répertoires:
la source
@ ghostdog74: Petit ajustement avec votre solution.
Le code suivant peut être utilisé pour rechercher un fichier avec son chemin absolu complet.
la source
Je connaissais le nom du fichier mais je voulais aussi le répertoire.
trouver $ PWD | nom de fichier fgrep
fonctionnait parfaitement sous Mac OS 10.12.1
la source