rm
正規表現を使用してコマンドを変更したり、何かを削除したりできますか?現在のディレクトリ内のすべてのファイル(拡張子が?であるファイルを除く)*.bmp
には、または同じファイルがあるため、大文字と小文字を区別しないでください。*.wav
*.png
*.BMP
*.bMP
ベストアンサー1
@ChrisDownが提供しました。離れbash
たこれは、ファイルとディレクトリの違いと、削除するファイルがないかどうかを考慮します。
ただしrm
、このような場合は失敗するため、次のようにコマンドを単純化できます(続行できますbash
)。
shopt -s extglob nocaseglob
rm -- !(*.bmp|*.wav|*.png)
両方のシェルオプションをデフォルト値にリセットすることを忘れないでください。私の場合は、extglob
インタラクティブシェルにすでに設定されているので、必要なだけでした。
shopt -u nocaseglob
または、サブシェルで次の2つのコマンドを実行します。
(shopt -s extglob nocaseglob
rm -- !(*.bmp|*.wav|*.png))
rm
どのファイルが削除されるかを事前に確認するにはecho
。
隠しファイルも削除するには、そのdotglob
オプションを追加してください。