コマンドラインを使用して、ファイル名に数字を含むディレクトリをどのように削除できますか?

コマンドラインを使用して、ファイル名に数字を含むディレクトリをどのように削除できますか?

その中にサブディレクトリがあるディレクトリがあり、サブディレクトリにはディレクトリ番号があります。たとえば、親ディレクトリがあり、現在、、、、、、、、testなどのサブディレクトリがあります。1234567

これでローカルエクスポート変数があります。たとえば。より大きい、同じ、同じ、同じ、または同じディレクトリをexport a=3削除したいので、ディレクトリを削除したいと思います。$a$a+2345

また、最小ディレクトリ数がわからず、$aディレクトリ数以下のすべてのエントリを削除しようとすると、1ディレクトリは2削除さ3れます。この目標をどのように達成できますか?

rm -rf {$a..$($a+3)}私は成功せずにそれを試み、rm -rf {<$a}成功しなかった他の多くのことを試しました。

ベストアンサー1

bashの代わりにzshを使用できます。これには、10進整数の範囲に一致するglob演算子があり、globを特定の種類のファイルに制限することもできます。目次あなたの場合)。

globは、3、4、5を含む3から5までの<3-5>数字で構成される文字列と一致します03003しかし、数字は文字通りでなければなりません。次のような場合でも変数を使用できます。

range="<$a-$((a+2))>"
rm -rf test/$~range(/)

ここで、$~range強制パラメータ拡張はパターンとして扱われ、(/)ファイルタイプに制限されます。目次

匿名関数を使用している場合は、中間変数なしで実行できます。

() { rm -rf test/$~1(/); } "<$a-$((a+2))>"

4より小さい数字を一致させるには、<0-3>またはを使用します<-3>。負の数も含まれます:(-<->|<0-3>)

その名前のファイルが存在するかどうかに関係なく(03、00005...に一致するものはありません)に拡張されますが、あなたの{$a..$((a+2))}方法はzshで動作します。動作しないという事実は、bashシェルにのみ影響する制限です(これをサポートするシェルでは実際にzshの発明です)。345{x..y}

おすすめ記事