【Linux】特定のファイル以外を指定して削除する方法

普段からLinux(特にCentOS)を使って作業することが多いのですが、
linuxのコマンドを知っているか否かでは作業効率が全然違います。
これは便利だな!と思ったコマンドは、忘れないうちにメモしていくように
したいと思います。

 

今回は自分がよく使うファイルの削除に関するコマンドをご紹介します。

通常のファイル削除

以下のディレクトリの状態を例に説明します。

$ ls -l /home/user/sample

-rw-r--r-- 1 user Domain Users 160 8月  16 19:07 sample01.tsv
-rw-r--r-- 1 user Domain Users 160 8月  16 19:07 sample02.tsv
-rw-r--r-- 1 user Domain Users 160 8月  16 19:08 sample03.tsv
-rw-r--r-- 1 user Domain Users 160 8月  16 19:08 sample04.tsv

ファイルの削除には「rm」コマンドを使います。

$ rm /home/user/sample/sample01.tsv
$ ls -l /home/uer/sample/
-rw-r--r-- 1 user Domain Users 160 8月  16 19:07 sample02.tsv
-rw-r--r-- 1 user Domain Users 160 8月  16 19:08 sample03.tsv
-rw-r--r-- 1 user Domain Users 160 8月  16 19:08 sample04.tsv


 

特定ファイル以外をすべて削除

ファイルを1つ1つ削除するなら上記の方法でいいのですが、特定のファイルは残したかったり、削除するファイル数が多かったりすると、途端に作業が面倒になります。
そんな時、特定のファイルを除きそれ以外のファイルを削除する方法があります。

# sample01.tsv以外のファイルを削除する例
$ ls /home/user/sample |  grep -v -E 'sample01.tsv' | xargs rm -rf 
$ ls -l /home/user/sample

-rw-r--r-- 1 user Domain Users 160 8月  16 19:07 sample01.tsv

linuxのコマンドは「|」で繋げることができます。
「ls」コマンドで対象ディレクトリのフォルダ一覧を抽出した上で、
「grep」コマンドの「-v」オプションを使って対象のファイルを除外し、
残りのファイルをすべて削除する、という流れになります。

 

ただ、上記のコマンドではファイルを削除する際、実施に対象ディレクトリ直下に
移動して行わないとうまくファイルを削除することができません。
なぜなら、「ls」コマンドで抽出されるファイル一覧がフルパスではなく、
ファイル名のみだからです。

$ ls /home/user/sample

sample01.tsv  sample02.tsv  sample03.tsv  sample04.tsv
 

どのディレクトリにいても、対象のディレクトリを指定してファイルを削除する場合は
以下のコマンドで対応しましょう。

$ find /home/user/sample -type f | grep -v -E 'sample01.tsv' | xargs rm -rf 
$ ls -l /home/user/sample

-rw-r--r-- 1 user Domain Users 160 8月 16 19:07 sample01.tsv

また、除外するファイルを増やしたい場合は、grepの条件に”|”でファイル名を
繋げば可能です。

$ find /home/user/sample -type f | grep -v -E 'sample01.ts|sample03.tsv' | xargs rm -rf 
$ ls -l /home/user/sample

-rw-r--r-- 1 user Domain Users 160 8月 16 19:07 sample01.tsv 
-rw-r--r-- 1 user Domain Users 160 8月 16 19:08 sample03.tsv


投稿日:2018-08-16    更新日:2019-07-04

[スポンサーリンク]

サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]