2012-06-15 3 views
26

Je souhaite rechercher une série de fichiers en fonction du nom du fichier.Fichier de recherche linux basé sur le modèle de nom de fichier

Voici mon répertoire:

enter image description here

Par exemple, j'ai eu le fichier sur ci-dessus.

Je veux seulement rechercher le fichier qui est sans _bak.

+1

Quel langage de programmation utilisez-vous? Quelles API? – sarnold

+0

Votre question est beaucoup trop vague pour donner une bonne réponse. Essayez-vous de rechercher le contenu des fichiers? Les noms de fichiers eux-mêmes? Essayez-vous simplement d'obtenir des noms de fichiers qui ne se terminent pas dans '_bak'? –

+0

En outre, vous devriez vraiment publier le contenu de votre répertoire en texte brut, pas une image. Voir [l'aide à la mise en forme] (http://stackoverflow.com/editing-help#code). –

Répondre

36

Si vous êtes désireux de limiter votre recherche dans le répertoire courant, utilisez:

find . -maxdepth 1 -mindepth 1 ! -name '*_bak' 

Si vous souhaitez rechercher récursivement dans tous les répertoires, supprimez le -maxdepth 1.


Modifier en réponse au commentaire de l'OP

Pour obtenir des fichiers qui commencent par ei et ne se terminent pas par _bak utilisation:

find . -type f -name 'ei*' -a ! -name '*_bak' 
+1

Salut Tim Pote, votre réponse est bien si sans -maxdepth 1 -mindepth 1. Merci pour votre aide. – crchin

+0

@ user1154655 Modifié selon votre suggestion. –

+0

Merci pour la réponse rapide! – crchin

-1

Utilisez l'option Grep Invert Match.

Par exemple, si vous voulez tout le fichier sans le mot _bak, utilisez:

grep -v *_bak /path/to/file 
+0

Salut Erwald, votre réponse ne fonctionne pas mais merci pour votre aide. – crchin

6

S'il vous plaît essayez ceci:

find . -type f ! -iname "*_bak" 

Ce qui précède commande va trouver tous les fichiers qui n'ont pas de fin avec _bak.

+0

La commande est utile. Merci . Si le répertoire contient d'autres fichiers, mais je veux juste rechercher le nom de fichier commence par ei mais sans Bak? – crchin

+1

@ user1154655 Voir ma réponse. –

+1

Cela fera 'find. -name 'ei *' -type f! -iname "* _bak" ' – Azi

Questions connexes