1 votes

`ls` avec joker avec sous-répertoires

Lorsque j'exécute une commande ls *, cela affichera

  1. les fichiers dans le répertoire actuel
  2. les répertoires dans le répertoire actuel
  3. les fichiers et répertoires dans les répertoires du répertoire actuel.

Lorsque j'utilise ls, je ne veux pas voir à l'intérieur des répertoires du répertoire actuel. Je suis un peu confus car depuis plus de 8 ans que j'utilise ubuntu, je n'ai jamais rien vu de tel auparavant.

Est-ce que c'est ainsi que ls devrait fonctionner? Y a-t-il un moyen d'arrêter que 3 se produise?

Par exemple, si j'ai file1.file folder1 folder2 folder3 textfile1.txt

Je veux que ls f* montre seulement

file1.file
folder1
folder2
folder3

Ubuntu 20.04 LTS

0voto

Terrance Points 35422

Une manière est d'utiliser la commande find au lieu de ls. Vous pouvez utiliser -maxdepth 1 pour ne pas lire dans les dossiers, et n'utiliser que l'option -name pour les caractères jokers.

Exemple:

find . -maxdepth 1 -name 'f*'

Retournera tout dans le dossier actuel . commençant par un f en minuscule, même les noms de dossier, mais ne vous montrera pas le contenu des dossiers.

0voto

vanadium Points 56513

Vous vous attendez à ce que cela fonctionne comme dans MS-DOS, cependant, c'est linux.

Les métacaractères sous linux sont étendus par votre shell pour correspondre à tous les éléments correspondant aux métacaractères. ls ne voit pas votre métacaractère. Il voit seulement une liste de noms de fichiers et de répertoires correspondant au métacaractère. Il affichera donc le contenu de tous les éléments répertoriés, c'est-à-dire le nom d'un fichier ou le contenu d'un dossier. Dans MS-DOS, les métacaractères feraient en sorte que la commande dir filtre la liste pour n'afficher que les noms correspondant au métacaractère.

Pour filtrer la sortie de ls, par exemple, pour ne voir que les noms de fichiers et de dossiers correspondant à f*, utilisez grep, c'est-à-dire redirigez la sortie de ls vers grep comme suit :

ls | grep ^f.*

^ et .* sont des expressions régulières. ^f signifie : f mais seulement au tout début. .* signifie . n'importe quel caractère * n'importe quel nombre de fois.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X