特定の種類のファイルを除くフォルダの消去

特定の種類のファイルを除くフォルダの消去

次のフォルダツリーがあります。

parent folder
....folder A
....folder B
    ....folder 1
    ....folder 2
....folder C
    ....folder 1
    ....folder 2
....folder D
    ....folder 1
    ....folder 2
. 
.

各フォルダにはいくつかのファイルがあります。これらのファイルにはさまざまな拡張子があります(zip、tar.gz、jpeg、bmp、csv、xlsx、doc、txt...など)。

  1. *.jpegファイルを除くフォルダ内のすべてのファイルを削除する方法。

  2. 複数の種類のファイル(例:*.jpeg、*.csvファイルを除く)を除くフォルダ内のすべてのファイルを削除する方法

これを達成するために、次のコマンドを使用するつもりです。

find . type -f -exec  

しかし、それを達成する方法がわからない! ...

別の方法がありますか?

答え1

find . type -f ! -name '*.jpeg' ! -name '*.csv' -delete

次のように読んでください。現在のディレクトリに移動し、通常のファイルで名前が一致しない場合は*.jpeg削除*.csvしてください。

ご使用のバージョンfindに該当する機能がない場合は、replate by コマンドを-delete呼び出します。findrm-delete-exec rm {} +

zsh(setopt extended_globopen)は、*~(PATTERN)一致しないすべてのファイルと一致しますPATTERN。使用グローバル予選 Dドットファイルと.一般ファイルのみが含まれています。除外パターンに一致する項目を除いて、ディレクトリ以外のすべての項目を削除するように.変更します。^/

rm **/*~*.(jpeg|csv)(D.)

関連情報