現場で特定のファイル名に絞って一括削除するスクリプトが書きたい場面があったので、調べて上手くいったコードをメモします。
現場のタスクを消化する中で時々同じ作業を繰り返す必要が出てくるのですが、そういう場合はなるべく手作業ではなくスクリプトを書くようにしてスキルアップに繋げていきたいと思っています。
いくつか記事を調べた結果、以下のようなスクリプトで指定した名前のファイルを削除できることが確認できました。
find ディレクトリ名 -type f -name "ファイル名" -delete
findコマンドにディレクトリ名とファイル名を指定してファイルを検索して、-deleteオプションで削除ができるとのこと。
こちらの記事を参考にさせてもらいました。
自分のローカルで試してみました。
まず以下のように検証用のディレクトリとファイルを用意しました。
上記のdelete.shにdummy1ディレクトリとdummy2ディレクトリ配下にある00から始まるファイルのみ削除するスクリプトを書きました。
delete.sh
#!/bin/bash find dummy1 -type f -name "00*" -delete find dummy2 -type f -name "00*" -delete
想定外のファイルやディレクトリが削除されないようにdummy2配下にdummy.shと、dummy3ディレクトリを準備しました。
現場でスクリプト書く時に余計なファイルまで消すようなことがあると大変そうなのでちゃんと確認したいので。
ターミナルからdelete.shを実行すると想定通りdummy1とdummy2配下の00から始まるファイルのみ削除されることが確認できました。