「edit」という単語を含まない指定されたパスのすべてのフォルダを削除しますか?

「edit」という単語を含まない指定されたパスのすべてのフォルダを削除しますか?

鉱山を整理するために簡単なスクリプトを設定しようとしていますworking folder。そのworking folder構造は次のとおりです。

Project 1
Project 1 [edited]
Project 2
Project 2 [edited]
Project 3
Project 3 [edited]
...

すべてのプロジェクトフォルダにはファイルのみが含まれています。目標は、working folderそのフォルダ内のすべてのフォルダを削除することですいいえ[edited]名目上あります。

答え1

GNU findを使用すると、次のようになります。

find . -maxdepth 1 -mindepth 1  ! -name "*edit*"

名前に「edit」が含まれていない現在のディレクトリのファイルと一致し、名前を印刷する必要があります。もちろん、-type d -iname "*project*"名前に "project"を含むディレクトリのみを一致させるように追加することもできます。出力が正しい場合は、追加して-delete削除findできます。

実際に Bash を使用すると、shopt -s extglob次のことも使用できます。

echo rm -r !(*edit*)/

末尾のスラッシュはディレクトリにのみ一致させ、echoコマンドを実行せずに印刷のみします。

関連情報