4 votes

Comment lister les fichiers en fonction d'une partie seulement de leur nom de fichier ?

J'ai de nombreux fichiers dans un dossier, par exemple

Kiran.txt
Kiran1.txt
Kiran221.txt
Kiran144.txt
Time.csv
Timer.csv
Timer2.csv
Timer444.csv
Timer266.csv
Account.sh
Account3.sh
Account3333.sh
Account3333.sh
Account333333.sh

A partir de ce répertoire, je veux savoir comment je pourrais utiliser grep pour afficher les fichiers en fonction d'une partie de leur nom de fichier - par exemple ceux qui commencent par "Compte" ou ceux qui se terminent par ".sh".

10voto

slhck Points 209720

Utilisez un caractère de remplacement ( Qu'est-ce que ce joker ? ):

ls *.sh

El * correspondra à tout ce qui précède la fin .sh que vous voulez. Utilisez les autres ls les options d'affichage, par exemple -l pour en faire une longue liste. Voir man ls pour plus d'informations sur ce que vous pouvez faire avec.

Notez que ls énumérerait également toute répertoire se terminant par .sh et pas seulement des fichiers.


Vous pouvez également utiliser find pour surmonter ce problème.

find . -type f -maxdepth 1 -name "*.sh"

Cette commande ne liste que les "vrais" fichiers. L'utilisation de find est recommandée si vous voulez faire quelque chose avec les fichiers trouvés par la suite. Vous pouvez le faire avec le site -exec option .

9voto

Felix Elnan Points 31

Vous pouvez find

find -type f -name "Account*"

Alternative 2 (qui pourrait également inclure le dossier)

ls -1 Account*

Alternative 3 (grep, cela peut aussi inclure le dossier)

ls -1 | grep -E "^Account"

3voto

Kirk Woll Points 793

La solution standard est un tuyau :

ls | grep ^Account

Avec quelque chose d'aussi simple que "Fichiers commençant par Compte", les globs fonctionneraient également :

ls Account*

mais en général un grep est plus puissant, et il ne risque pas de dépasser la longueur maximale de la ligne de commande si votre dossier est vraiment, vraiment complet.

3voto

tommythelittleguy Points 164

Utilisez la commande suivante

   ls *.sh

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