ホームページ php教程 PHP开发 Linuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法

Linuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法

Nov 16, 2016 am 09:35 AM

場合によっては、ディレクトリ内のすべてのファイルを削除したり、一部の指定された種類 (指定された拡張子で終わる) を除くファイルを削除してディレクトリをクリーンアップする必要がある状況に遭遇することがあります。

この記事では、指定されたファイル拡張子を除くディレクトリ内のファイルを削除する方法、または rm、find、および globignore コマンドを使用して入力する方法を説明します。

先に進む前に、Linux の重要な概念である、当面の問題を解決できるファイル名パターン マッチングについて簡単に見てみましょう。

Linux では、シェル パターンは、ワイルドカードまたはメタ文字と呼ばれる次の特殊文字を含む文字列です:

* – 0 個以上の文字と一致します

? – 任意の 1 文字と一致します

[sequence] – 文字列内の任意の文字と一致します。シーケンス

[!sequence] – シーケンスにない任意の文字と一致します

ここでは、次の 3 つの可能なアプローチを検討します:

拡張パターン マッチング演算子を使用してファイルを削除する

さまざまな拡張パターン マッチング演算子を以下に示します。リストは、| で区切られた 1 つ以上のファイル名を含むリストです:

* (パターン リスト) – 指定されたパターンの 0 個以上の出現と一致します

?(パターン リスト) – 指定されたパターンの 0 または 1 つの出現と一致します

@(パターン リスト) – 指定されたパターンの 1 つ以上の一致と一致します

!(パターン リスト) – 指定された 1 つのパターンを除く一致と一致します

これらを使用するには、次のように extglob シェル オプションをオンにする必要があります:

# shopt -s extglob
ログイン後にコピー

1. 次のコマンドを入力して、ディレクトリ内の filename を除くすべてのファイルを削除します

$ rm -v !("filename")
ログイン後にコピー

Linuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法

Linux では、filename1 と filename2 を除くすべてのファイルを削除します

$ rm -v !("filename1"|"filename2")
ログイン後にコピー

2.

Linux で一部のファイルを除くすべてのファイルを削除します Linuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法

3. 次の例は、対話型モードで一部のファイルを除くすべてのファイルを削除する方法を示しています。次に、次の方法でディレクトリ内の .zip と .odt を除くすべてのファイルを削除できます。 ファイル内のすべてのファイルを削除するときに、削除されるファイルを表示します:

$ rm -i !(*.zip)
ログイン後にコピー

指定されたファイル拡張子を除くすべてのファイルを削除しますLinuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法

必要なコマンドをすべて実行したら、次の方法を使用することもできます。 extglob シェル オプションをオフにします。

$ rm -v !(*.zip|*.odt)
ログイン後にコピー

Linux で find コマンドを使用してファイルを削除します

この方法では、以下に示すように、find コマンドの適切なオプションを使用するか、xargs コマンドでパイプを使用することができます。現在のディレクトリ内の .gz を除くすべてのファイルを削除します

$ shopt -u extglob
ログイン後にコピー
Linuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法

find コマンド - .gz を除くすべてのファイルを削除します

6. パイプと xargs を使用して、上記の例を次のように変更できます。ファイルを削除する find および xargs コマンド

7. 次のコマンド ラインは、現在のディレクトリにある .gz、.odt、および .jpg を除くすべてのファイルを削除します。指定された拡張子ファイル

bash の GLOBIGNORE 変数を使用してファイルを削除します

ただし、この最後の方法は bash でのみ機能します。 GLOBIGNORE 変数には、パス名拡張関数で無視されるパターン (またはファイル名) のコロンで区切られたリストが格納されます。

Linuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法この方法を使用するには、ファイルを削除するディレクトリに移動し、次のように GLOBIGNORE 変数を設定します:

$ find /directory/ -type f -not -name 'PATTERN' -delete 
$ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm {} 
$ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm [options] {}
ログイン後にコピー

この場合、.odt、.iso、.txt を除くすべてのファイルが、カレントディレクトリが削除されます。

次に、次のコマンドを実行してこのディレクトリをクリアします:

$ find . -type f -not -name '*.gz' -delete
ログイン後にコピー

その後、GLOBIGNORE 変数を閉じます: Linuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法

$ unset GLOBIGNORE
ログイン後にコピー

Linuxでディレクトリ内の一部のファイルを除くすべてのファイルを削除する3つの方法

使用 bash 变量 GLOBIGNORE 删除文件

注:为了理解上面的命令行采用的标识的意思,请参考我们在每一个插图中使用的命令对应的 man 手册。



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)