その中にサブディレクトリがあるディレクトリがあり、サブディレクトリにはディレクトリ番号があります。たとえば、親ディレクトリがあり、現在、、、、、、、、test
などのサブディレクトリがあります。1
2
3
4
5
6
7
これでローカルエクスポート変数があります。たとえば。より大きい、同じ、同じ、同じ、または同じディレクトリをexport a=3
削除したいので、ディレクトリを削除したいと思います。$a
$a+2
3
4
5
また、最小ディレクトリ数がわからず、$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>
数字で構成される文字列と一致します03
。003
しかし、数字は文字通りでなければなりません。次のような場合でも変数を使用できます。
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の発明です)。3
4
5
{x..y}