今回はファイルの削除です。前回同様ラズベリーパイで動作するのをベースにして書いていますが、特に注意書きがない限りはWindows&Mac PowerShell、UNIX系シェル(bash,zsh)でも動作します。コマンドに慣れていない人はラズベリーパイ上または仮想環境上で実行した方がよいでしょう。ファイル操作を行うコマンドに慣れたら実機、本番環境で実行してください。特に今回はファイル・ディレクトリを削除するので本番環境で失敗してしまうとお手上げになってしまうこともあります。自分のデータが削除されてしまったなら、まだ良いかもしれませんが、顧客データが消えてしまったら会社の信頼・存亡に関わります。(大昔と違って今は手軽に削除しにくくはなっていますが。実験として本文の最後にrm -fr /の実行結果を示してあります)
ファイルを削除する
まずは簡単なところでファイルを1つ削除してみます。削除するファイルをデスクトップに用意します。GUIからファイルを作成しても構いませんし、コマンドを入力して作成しても構いません。コマンドで作成する場合は以下のようにします。とりあえずファイル名は1.txtとします。
・bash,zsh
touch ~/Desktop/1.txt
・PowerShell
New-Item ~/Desktop/1.txt
ファイルを削除するにはrmコマンドを使います。rmコマンドの後に削除するファイル名、ファイルパスを指定します。
rmコマンドの注意点としては、削除したらファイルが本当に削除されてしまうという事です。WindowsやMacなどGUIを使ってファイル操作をしていると、ファイルを削除すると一旦ゴミ箱に入ります。その後、ゴミ箱を空にするとようやくファイルが削除されます。つまり、削除までにワンクッションあるので、間違って削除してもゴミ箱から戻すことができます。
rmコマンドの場合、削除するファイルがゴミ箱に入ることはありません。でも、万が一に重要なファイルを削除してしまった場合は、100%戻せる保証はありません。が、一応ファイル復旧ソフトを使えば戻すことができます。
重要なファイルは、やはりバックアップを取っておくのが無難です。重要なファイル、ディレクトリが決まってるなら、これまでに説明したzipとcpコマンドを使って別のディスクに定期的にバックアップするようにしておくのも1つの方法です。最近では、OSにバックアップ機能があるので、それを利用した方がよいでしょう。
長い前振りでしたが、デスクトップ上にある1.txtファイルを削除してみましょう。以下のようにコマンドを入力します。
・bash,zsh
rm ~/Desktop/1.txt
・PowerShell
Remove-Item ~/Desktop/1.txt
デスクトップ上にあったファイルが消えるので見た目にも分かりやすいでしょう。ちなみに削除するファイルがない場合は以下のように表示されます。
rmコマンドは前回説明したmvコマンドと同様、複数のパラメータを指定する事ができます。指定したパラメータの数だけファイルを削除できます。例えば、デスクトップ上にある1.txt,a.txt,img.jpgという3つのファイルをまとめて削除するには以下のように指定します。実際に試す場合はこれら3つのファイルを作成しておきましょう。
PowerShellのRemove-Itemコマンドの場合も複数ファイルを削除できますが、半角空白区切りではなく,区切りで削除するファイルのパスを指定します。
・bash,zsh
rm ~/Desktop/1.txt ~/Desktop/a.txt ~/Desktop/img.jpg
・PowerShell
Remove-Item ~/Desktop/1.txt,~/Desktop/a.txt,~/Desktop/img.jpg
同じ拡張子のファイルを削除する
cp,mvコマンドでも説明した正規表現・ワイルドカードの*を使うと同じ拡張子のファイルをまとめて削除することができます。実行する前にデスクトップ上にtestディレクトリを作成、その中に複数のtxtの拡張子を持つファイルを作成しておきます。また、拡張子がjpg,jpegのファイルもいくつか作成しておきます。bash,zshなら以下のようにコマンドを入力すると1〜3までのtxt,jpg,jpeg,png拡張子のファイルをまとめて作成することができます。
mkdir ~/Desktop/test
touch ~/Desktop/test/{1..3}.{txt,jpg,jpeg,png}
拡張子がtxtファイルを削除するには以下のように書きます。PowerShellでも同じコマンドで動作します。
rm ~/Desktop/test/*.txt
拡張子がtxtのファイルだけが削除され、他のファイルはそのまま残っているはずです。
次にJPEG画像ファイルを削除してみましょう。JPEG画像の場合、jpgとjpegの2種類の拡張子があります。
bash,zshでは以下のように指定します。この書き方はこれまでにも何度も出てきたので、すでにおなじみでしょう。
rm ~/Desktop/test/*.{jpg,jpeg}
PowerShellの場合は以下のようになります。
Remove-Item ~/Desktop/test/*.jpg,~/Desktop/test/*.jpeg