7
votes

Bash: Inverse (c.-à-d. NON) EXPANSION GLANDCARD SHOELL?

Y a-t-il un moyen de manipuler l'expansion de Shell Bash V4, c'est-à-dire. Traitez tous les fichiers pas comme une base générique? J'ai besoin de RM Tous les fichiers qui ne sont pas du format 'dossier - ???' Dans ce cas et se demandaient s'il y a un plus court (c'est-à-dire intégré intégré ) Ensuite, faites une boucle xxx

. (L'exemple ne fonctionne pas, BTW ...)

juste hors de la curiosité d'apprentissage de bash ...


3 commentaires

Je crains que vous ne puissiez pas faire cela et que vous devez utiliser des expressions régulières à la place.


Dupliquer possible de Comment puis-je utiliser des caractères génériques inverse ou négatif lorsque le motif correspondant dans une coque UNIX / Linux?


@Tomas fausse; Extglobs sont réversibles.


3 Réponses :


17
votes
shopt -s extglob
rm -- !(Folder-???)

0 commentaires

4
votes

@Dimitre a le bonne réponse pour frapper. Une solution portable consiste à utiliser case : xxx

une autre solution bash consiste à utiliser l'opérateur correspondant à motif à l'intérieur [[...] ( Documentation ) xxx


1 commentaires

Bonjour @glenn, juste pour ajouter que dans les deux cas: Case Varname ... Varname Intérieur [[[...]] No Shell La scission de mot / champ est effectuée, l'identifiant n'a donc pas besoin d'être cité (et la citation dans ce contexte, bien sûr, n'est pas nuisible non plus).



3
votes

Si vous allez bien avec Recherche , vous pouvez inverser trouver des prédicats par -Not .

comme dans xxx

(note que cela correspond à des différences de manière récursive parmi d'autres différences à la correspondance de SHELL Glob, mais je suppose que vous savez que vous savez trouver assez bien)


0 commentaires