大掃除がてら音楽を整理していたら、
10年くらい前に持っているCDをmp3化したファイルがあって
歌詞が載っているリンクやhtmlのファイルが
ご丁寧に一緒に入っていました(;´・ω・)
htmlファイルとかどうでもいいからmp3ファイルだけ残したい。
しかし、まともに消していたら日が暮れる……
ということで、Windowsの場合Explorerから検索して消すっていう手もあるのですが、
あまり効率のいいやり方ではありません。
コマンドラインでやる方法を紹介します。
cdで対象のmp3以外を消したい一番上のディレクトリに移動しておきます。
その直下を再帰的にmp3以外のファイルを消しに行くコマンドです。
Unix系(Linux, Cygwinなど)、またはMac
消すファイルの確認
find . -not -iname "*.mp3" -type f
これで消そうとする対象のファイルをピックアップできます。
良さそうであれば消しにかかります。
削除実行
find . -not -iname "*.mp3" -type f -delete
これで消えてくれます。LinuxとMacはこれでいいのですが、
問題はWindowsです。Cygwinを入れている酔狂な人はそんなにいないでしょうから。
コマンドプロンプトの場合
無理!
むりやりバッチファイルでも作らない限り……
PowerShellの場合(Windows 7以降なら標準搭載)
消すファイルの確認
Get-ChildItem -Recurse -Exclude "*.mp3" | Where-Object { Test-Path $_ -PathType Leaf } | Remove-Item -WhatIf
削除実行
Get-ChildItem -Recurse -Exclude "*.mp3" | Where-Object { Test-Path $_ -PathType Leaf } | Remove-Item
PowerShellは長ったらしいですね。一応Get-ChildItemはls、Remove-Itemはrmに書き換えられますが……
にしても長い。ちなみにWhere-Object { Test-Path $_ -PathType Leaf }
は
ファイルだけっていう絞込みをしています。もっとスマートな方法がないものか……
しつこいようですが、ちゃんと目的のディレクトリにcdできたことを確かめて実行してくださいね!
でないと大事故になりますので(;^ω^)