Unix/Linux シェルでパターンマッチングを行うときに、逆または負のワイルドカードを使用するにはどうすればよいでしょうか? 質問する

Unix/Linux シェルでパターンマッチングを行うときに、逆または負のワイルドカードを使用するにはどうすればよいでしょうか? 質問する

たとえば、名前に「Music」という単語が含まれるファイルとフォルダーを除いたディレクトリの内容をコピーしたいとします。

cp [exclude-matches] *Music* /target_directory

これを実現するには、[exclude-matches] の代わりに何を入力すればよいでしょうか?

ベストアンサー1

extglobBashでは、次のようにオプションを有効にすることで実行できます(もちろん、ターゲットディレクトリを置き換えlsて追加します)。cp

~/foobar> shopt extglob
extglob        off
~/foobar> ls
abar  afoo  bbar  bfoo
~/foobar> ls !(b*)
-bash: !: event not found
~/foobar> shopt -s extglob  # Enables extglob
~/foobar> ls !(b*)
abar  afoo
~/foobar> ls !(a*)
bbar  bfoo
~/foobar> ls !(*foo)
abar  bbar

後でextglobを無効にするには、

shopt -u extglob

おすすめ記事