回答:
bashの下で実行shopt -s extglob
(またはに挿入)すると、(kshから継承された)異常な構文を持つ正規表現を提供~/.bashrc
する追加のパターンを使用できます。もちろん、これらのパターンはkshでも使用できますsetopt ksh_glob
。また、zsh以降でも使用できます。
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
zshでは(foo|bar)
、パターンとして直接使用できます。
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
コマンドはフルパスで呼び出されることに注意してください。短いパスでコマンドを呼び出したい場合(cd /opt/somedir && somecommand aa bb cc)
は、何らかの方法でディレクトリを変更する必要がありますが、これがはるかに簡単な方法です。
まず、次のように指示します:ls、everを解析しないでください。あなたがしたいことをするための適切で標準的な方法は findです。
例えば:
find /opt/somedir -regex '.*[aa|bb|cc].*' -exec mv '{}' ~/backup \;
私は通常、より単純なので-name
代わりに使用します-regex
。しかし、正規表現はユースケースに適合します。実際に移動/削除したいファイルであることを確認するために、初めてコマンドを 実行する必要-exec
はありません。