ディレクトリからXNUMXつを除くすべてのファイルを削除する方法

Linuxファイルを削除する

時々あなたは必要です ディレクトリからほとんどすべてのファイルを削除します、しかし、それらのXNUMXつまたはいくつかを保持したい。 それらが多数ある場合、XNUMXつずつ行くのは面倒な作業です。 これは最善の選択肢ではありません。Linuxでの作業をはるかに簡単にし、必要なものをすべて一度に削除できる方法があります。

たとえば、特定の名前で始まるものだけを削除したり、特定の拡張子を持つものだけを削除したりすることができます。 可能なことすべて実際、他の機会に、私はすでにLxAで同様のチュートリアルを示しました。 ここでは、チュートリアルをステップバイステップで簡単に実行して、保存するファイルを除いて、必要なすべてのファイルを削除できます。

そして最高のことはそれです プログラムをインストールする必要はありません。 rmやfindなどのコマンドで簡単に実行できます。 つまり、Linuxディストリビューションにすでにプリインストールされているプログラムです。 そしてもちろん、この方法は、パターンを見つけ、それらの一致を使用して必要なものだけを削除することに基づいています。

さて、そこを排除するために いくつかの選択肢、 彼らは何ですか…

rmを使用してディレクトリからファイルを削除します

さて、使用するために rmコマンド あなたがどのように感じるかを排除するために、あなたはパターンを識別するいくつかの方法の前に知る必要があります:

  • *(パターンのリスト) -指定されたパターンのXNUMX回以上の出現に一致します
  • ?(パターンのリスト) -指定されたパターンのXNUMX回またはXNUMX回の出現に一致します
  • +(パターンリスト) -指定されたパターンのXNUMXつ以上のオカレンスに一致します
  • @(パターンリスト) -指定されたパターンのXNUMXつに一致します
  • !(パターンリスト) -指定されたパターンのXNUMXつを除くすべてに一致します

extglobをアクティブにする それらを使用するには、最初に次のコマンドを実行する必要があります。

<br data-mce-bogus="1">

shopt -s extglob<br data-mce-bogus="1">

眼! 指定はしていませんが、これらの操作を実行する権限があり、rmコマンドを実行するとそのディレクトリ内にいることを前提としています。 別のパスで実行すると、不要なファイルが削除される可能性があるため、これには注意してください。 つまり、これらのコマンドを実行する前に、cdで目的のディレクトリを入力したことを確認してください。

これで、rmを使用して必要なものをすべて削除できます。 例えば、 名前に一致するファイルを除くすべてのファイルをディレクトリから削除します «lxa»:

rm -v !("lxa")

指定することもできます 削除したくないXNUMXつ以上の名前。 たとえば、「lxa」と「desdelinux」の削除を回避するには、次のようにします。

 rm -v !("lxa"|"desdelinux") 

あなたはすべてのファイルを削除することができます、 拡張子のあるものを差し引いたもの .mp3。 例えば:

 rm -v !(*.mp3) 

最後に、に戻ることができます extglobを無効にする:

 shopt -u extglob 

検索でディレクトリからファイルを削除します

rmの別の代替手段は findを使用して、必要なものをすべて削除します。 rmでpipeとxargsを使用するか、-deleteオプションを使用して検索できます。 つまり、一般的な構文は次のようになります。

find /directory/ -type f -not -name 'PATRÓN' -delete
find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}

たとえば、あなたが欲しいと想像してください 拡張子が付いているファイルを除く、ディレクトリ内のすべてのファイルを削除します .jpgの場合、どちらも同じ結果になるため、次のXNUMXつのコマンドのいずれかを使用できます。

find . -type f -not -name '*.jpg'-delete

find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}

代わりに、必要に応じて いくつかの余分なパターンを追加します、あなたもできます。 たとえば、ディレクトリから.pdfまたは.odtを削除したくないとします。

find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete

もちろん、|でも同じことができます。 前の例のようにxargs。 ちなみに、 -否定しないでください、 ただし、それを削除してポジティブにすることはできます。つまり、一致するパターンを削除し、除外しないようにすることができます。

GLOBIGNORE変数を使用してディレクトリからファイルを削除します

最後に、 別の選択肢 検索してrmし、環境変数を使用して、削除または除外するファイルをポイントします。 たとえば、Downloadsというディレクトリ内のすべてのファイルを削除して、.pdf、.mp3、および.mp4ファイルを保存するとします。 その場合、次のことができます。

cd Descargas
GLOBIGNORE=*.pdf:*.mp4:.*mp3
rm -v *
unset GLOBIGNORE


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。