📝
linuxで検索したファイル(特定のファイル)を一括で削除する
ディレクトリに以下の6ファイルがあるとします。
$ ls -l
total 0
-rw-r--r-- 1 root root 0 Jan 13 08:47 2023-01-01-01-30-01.zip
-rw-r--r-- 1 root root 0 Jan 13 08:47 2023-01-02-01-30-01.zip
-rw-r--r-- 1 root root 0 Jan 13 08:47 2023-01-03-01-30-01.zip
-rw-r--r-- 1 root root 0 Jan 13 08:42 2023-12-22-01-30-01.zip
-rw-r--r-- 1 root root 0 Jan 13 08:42 2023-12-23-01-30-01.zip
-rw-r--r-- 1 root root 0 Jan 13 08:47 2023-12-24-01-30-01.zip
この中から、2023-01-01-01-30-01.zip
, 2023-01-02-01-30-01.zip
, 2023-01-03-01-30-01.zip
のファイルを削除したいとします。ちまちまrm
をして1つずつファイルを削除するのは手間ですよね。
なので、ここで便利なコマンドを使用します。
コマンドはこれです。
$ find -name "ファイル名のパターン" -exec rm {} \;
find
で検索して該当したファイルを削除します。ファイル名のパターンのところは、ワイルドカードを含めることができます。なので、先ほど書いた3ファイルを削除するには、以下のようにコマンドを入力して実行します。
$ find -name "2023-01*" -exec rm {} \;
これで、まとめて3ファイルを削除することができました。
$ ls -l
total 0
-rw-r--r-- 1 root root 0 Jan 13 08:42 2023-12-22-01-30-01.zip
-rw-r--r-- 1 root root 0 Jan 13 08:42 2023-12-23-01-30-01.zip
-rw-r--r-- 1 root root 0 Jan 13 08:47 2023-12-24-01-30-01.zip
まずはfind
で検索する。その検索結果から削除するファイルを確認してから、削除を実行した方が良いです。
参考
Discussion