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

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

この記事では、指定されたファイル拡張子を除くディレクトリ内のファイルを削除する方法、または 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ヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。