次のフォルダツリーがあります。
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...など)。
*.jpegファイルを除くフォルダ内のすべてのファイルを削除する方法。
複数の種類のファイル(例:*.jpeg、*.csvファイルを除く)を除くフォルダ内のすべてのファイルを削除する方法
これを達成するために、次のコマンドを使用するつもりです。
find . type -f -exec
しかし、それを達成する方法がわからない! ...
別の方法がありますか?
答え1
find . type -f ! -name '*.jpeg' ! -name '*.csv' -delete
次のように読んでください。現在のディレクトリに移動し、通常のファイルで名前が一致しない場合は*.jpeg
削除*.csv
してください。
ご使用のバージョンfind
に該当する機能がない場合は、replate by コマンドを-delete
呼び出します。find
rm
-delete
-exec rm {} +
zsh(setopt extended_glob
open)は、*~(PATTERN)
一致しないすべてのファイルと一致しますPATTERN
。使用グローバル予選 D
ドットファイルと.
一般ファイルのみが含まれています。除外パターンに一致する項目を除いて、ディレクトリ以外のすべての項目を削除するように.
変更します。^/
rm **/*~*.(jpeg|csv)(D.)