min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

bash と awk でゴミファイルだけ一括で削除する

f:id:min117:20200215221111p:plain

画像をフフフフォルダから一括でcurl取得したら失敗した。存在しないリンクにダウンロードに行っちゃってゴミファイルが大量にできてしまっている(512KBのファイル)。

 

$ ls -shal

f:id:min117:20200215220045p:plain

まともにダウンロードできたファイルも混在しているが、この大量の画像のなかから容量512KBのゴミファイルだけを選択して削除したい。

 

ls -shal の結果を bash のfor文に食わせて行頭が512のものだけ削除できればいい。

 

できた。

 

512KBのものだけを選択。

$ (IFS=$'\n'; for i in $(ls -shal | grep FFA | awk '$1 ~ /512/ {print $1,$10}'); do echo "$i"; done; )

f:id:min117:20200215220650p:plain

awkで行頭512のものだけに限定している。

 

それを削除

$ (IFS=$'\n'; for i in $(ls -shal | grep FFA | awk '$1 ~ /512/ {print $10}'); do echo "$i"; rm -rf "$i"; done; )

f:id:min117:20200215221544p:plain

 

確認。

f:id:min117:20200215221632p:plain

 

以前も似たようなことをしたけど、たぶん今回のほうが応用の幅が広い。

min117.hatenablog.com

 

ls -shal の結果がスペースで区切られてしまわないように、グループコマンドでIFSを一時的に変更しているのもコツ。

min117.hatenablog.com