Est-il possible de lister les noms de fichiers commençant par X ou contenant X?

2

Comme le titre le demande, est-il possible de lister les fichiers commençant par X ou contenant X?

lsest utilisé pour lister les fichiers. Existe-t-il des options que je peux utiliser pour répertorier les fichiers commençant par une lettre ou contenant une lettre spécifique?

irl_irl
la source

Réponses:

3

"Commencer par" est juste une spécialisation de "contenant", vous pouvez donc utiliser la même chose pour les deux.

ls *X*
Ignacio Vazquez-Abrams
la source
1
Cela a la coche, mais je ne pense pas que cela réponde à la question. Ceci affiche le contenu de chaque sous - répertoire du dossier en cours dont les noms contiennent X. Il ne montre PAS la liste de tout le contenu du dossier en cours. contenant X.
75th Trombone
1
@ 75thTrombone Pas sûr de bien comprendre ce que vous dites. Le caractère générique correspond aux noms de fichiers avec X n'importe où en eux; la liste du contenu des sous-répertoires correspondants est une fonctionnalité de (mis -?) lsqui peut être désactivée avec l’ -doption.
tripleee
Pour que cela soit sûr et fonctionne dans tous les cas prévus, il convient de prendre l'habitude de l'utiliser ls -- *X*.
Moreaki
6

Pour faire la partie "contenant X", vous feriez:

ls | grep "X"

ls - Liste tous les fichiers du répertoire en cours

| - Pipe, envoie toutes les sorties de la commande avant celle-ci en entrée de la commande après celle-ci.

grep "X" - Recherche du texte dans l'entrée donnée (ici, à travers le tuyau).

ls -1 | grep "^X"

ls- Répertorie les fichiers du répertoire en cours, un par ligne, ce qui est essentiel pour l'expression régulière à utiliser grep.

| - pipe

grep "^X" - Cela se traduit essentiellement par: "Le début de la ligne, puis X" pour afficher les fichiers commençant par "X".

J'espère que cela t'aides!

Wuffers
la source
2
mywiki.wooledge.org/ParsingLs
Ignacio Vazquez-Abrams
Et vous n’avez pas besoin de passer -1option lors de la lssortie de la tuyauterie , il n’exporte que la liste compacte en ttys.
Whitequark
non seulement c'est beaucoup plus lent, c'est aussi une mauvaise idée. voir Pourquoi ne pas analyser ls(et que faire à la place)?
phuclv
0

Pourquoi utiliser ls *X*? Lorsque vous tapez cette commande, bashinterprète déjà les étoiles et les développe, doncecho *X* fera exactement la même chose.

Mais il ne listera pas les fichiers dont le nom commence par un point. Si vous voulez vraiment des fichiers, ma meilleure suggestion est:

find .  -maxdepth 0 -type f -iname '*X*'

( -maxdepth 0empêche les sous-répertoires d’analyse).

Benoit
la source
-maxdepth 0peut être fait avec ls -d. Et les fichiers de points peuvent être développés avecshopt -s dotglob
phuclv
0

Utilisation du caractère générique:

ls *X*

Va lister tous les fichiers contenant "X"

ls X*

Répertorera tous les fichiers commençant par "X"

ls *X

Répertorera tous les fichiers se terminant par "X"

Theo
la source
Bien que votre contribution soit très appréciée, elle n’est malheureusement que partiellement correcte. Essayez ceci: touch -- '-X' && ls *X. Sous MacOS, vous obtenez une erreur et sous la plupart des distributions Linux, vous obtenez un sous-ensemble de la liste actuelle de tous les fichiers. Une solution plus complète serait à utiliser ls -- *X.
Moreaki le
-4

Ce sont d'excellentes suggestions - SI VOUS UTILISEZ LINUX! L'utilisation de la commande "ls" est presque identique à la commande DIR de MS-DOS. Cependant, la commande ls ne réside que dans certains interpréteurs de ligne de commande tels que C-shell et PAS dans MS-DOS et certainement PAS MS-Windows.

Donc, si vous vous interrogez sur une solution Windows, je suppose que vous n’avez pas exploré l’explorateur Windows (à ne PAS confondre avec "Internet Explorer" non plus). Par exemple, pour afficher les fichiers par ordre alphabétique dans l'Explorateur Windows, ouvrez-le simplement (cliquez sur Poste de travail, par exemple), assurez-vous de pouvoir afficher les détails, accédez au dossier que vous souhaitez trier, puis cliquez sur la colonne "Nom". pour voir tous les fichiers commençant par A suivi des fichiers commençant par B et ainsi de suite. Cliquez à nouveau dessus et vous pourrez voir tous les fichiers listés dans l'ordre inverse, où vous verrez d'abord tous les fichiers commençant par Z. Cliquez dessus une troisième fois pour revenir à la liste des premiers. Mais ça ne s'arrête pas là. Vous pouvez ensuite cliquer sur la colonne de date (en supposant que vous ne l'ayez pas t désélectionnez les paramètres par défaut du menu et masquez-le (ou quelque chose de ce genre) pour afficher une liste alphabétique avec les fichiers les plus récents datés en premier. Vous pouvez même ajouter d'autres colonnes (en cliquant avec le bouton droit de la souris) où vous pouvez ajouter ou supprimer des options d'affichage dans lesquelles vous pouvez même spécifier un en-tête pouvant afficher des fichiers en fonction d'une formule de recherche ou même de cases à cocher - et ce n'est qu'un début!

Là encore, si vous êtes de la vieille école, vous pouvez simplement utiliser la ligne de commande DOS dans une zone DOS. Par exemple, ouvrez une boîte de dialogue DOS (exécutez "cmd.exe"), accédez à votre répertoire / dossier et tapez "dir [étoile] x [étoile]" (sans les guillemets) pour afficher tous les fichiers avec x dans le nom. . Bien sûr, vous pouvez également rediriger la sortie vers un autre fichier. L'exemple ci-dessous serait 'dir [étoile] x [étoile]> nom_fichier.txt' qui créerait un fichier texte appelé 'nomfichier.txt' et contiendrait une liste de tous les fichiers dont le nom était x. Bien sûr, taper "dir x [étoile]" n'affichera que les fichiers commençant par la lettre x. (Remarquez la différence subtile où x est placé dans la commande et le symbole joker astérisque [étoile]?). Et si vous voulez vraiment devenir fou, vous pouvez même écrire un fichier de commandes! Juste ne pas t oubliez la ligne de pause ou redirigez la sortie car ce serait plutôt inutile sinon. (Quelqu'un se souvient de la "programmation" par lots DOS?! Lol)

J'espère que ça aide.

PS je devais substituer le caractère astérisque en utilisant [star] car ce blog ne les imprimera pas - désolé.

PSS je sais. Je connais! Je peux probablement ajouter le caractère astérisque [étoile] mais j'ai déjà posté. Alors s'il vous plaît, ne vous y attardez pas. Je vais essayer de me rappeler (comment je poste) la prochaine fois.

Anonyme
la source
2
"ls" est probablement disponible si bash l'est déjà. "ls" n'a rien à voir avec le C-shell. "bash" n'est absolument pas limité à Linux. Je les exécute tous les deux sous de nombreuses variantes d'Unix, de Windows et de plusieurs systèmes d'exploitation plus exotiques.
Jlliagre
Ce n'est pas un "blog". Vous obtenez un astérisque littéral en lui échappant avec une barre oblique inverse. Voir l' aide au formatage qui s'affiche dans la barre latérale pendant la modification.
tripleee