Sous bash, exécutez shopt -s extglob
(ou mettez-le dans votre ~/.bashrc
) et vous pouvez utiliser des modèles supplémentaires qui fournissent des expressions régulières avec une syntaxe inhabituelle (héritée de ksh). Vous pouvez également utiliser ces modèles dans ksh, bien sûr, et aussi dans zsh après setopt ksh_glob
.
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Dans zsh, vous pouvez directement l'utiliser (foo|bar)
comme modèle.
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Notez que la commande est appelée avec le chemin complet. Si vous souhaitez appeler la commande avec un chemin court, vous devrez modifier le répertoire d'une manière ou d'une autre, et (cd /opt/somedir && somecommand aa bb cc)
c'est de loin le moyen le plus simple.
Gilles 'SO- arrête d'être méchant'
la source
Vous pouvez filtrer en utilisant
egrep
:Pour rechercher tous les fichiers texte:
la source
Tout d'abord, je vous ordonne de: ne jamais analyser ls , jamais . La manière appropriée et canonique de faire ce que vous voulez est de trouver .
Par exemple:
J'utilise habituellement
-name
au lieu de-regex
car c'est plus simple. Mais une expression régulière convient à votre cas d'utilisation. Vous devez exécuter la commande sans-exec
la première fois, pour vous assurer qu'il s'agit bien des fichiers que vous souhaitez déplacer / supprimer.la source