Bashのファイル名拡張メカニズムから特定のファイルを除外する方法は?

Bashのファイル名拡張メカニズムから特定のファイルを除外する方法は?

ルートディレクトリにubuntuファイルシステムディレクトリがあり、誤って何百ものファイルをルートディレクトリにコピーしました。

ファイルシステムを除いて、コピーされたファイルを直感的に削除しようとしました。

rm -rf !{bin,sbin,usr,opt,lib,var,etc,srv,libx32,lib64,run,boot,proc,sys,dev} ./.

しかし、うまくいきません。ディレクトリ全体を削除するときに特定のディレクトリを除外する正しい方法は何ですか?

編集する:何をすべきかわからず、ここにあるコマンドを試さないでください!

ベストアンサー1

あなたが使用しているのでbash

shopt -s extglob
echo rm -rf ./!(bin|sbin|usr|...)

echoシステム全体を台無しにする可能性があるものを実行している場合は、コマンドラインの先頭に追加することをお勧めします。結果が満足であれば削除してください。

注:上記のコマンドは、隠しファイル(名前がドットで始まるファイル)を削除しません。これらのアイテムも削除するには、次のdotglobオプションも有効にしてください。

shopt -s dotglob

おすすめ記事