Linux のコマンドラインで、特定の範囲のディレクトリ内に存在する subdir
ディレクトリを削除する方法について説明します。今回は 000 から 100 のディレクトリを対象とし、存在しない番号はスキップします。
例えば、002は存在しないのでスキップします
.
├── 000/subdir
├── 001/subdir
├── 003/subdir
└── 010/subdir
方法 1: for ループと条件分岐を使用
for i in $(seq -w 0 100); do [ -d "$i/subdir" ] && rm -rf "$i/subdir"; done
for i in $(seq -w 0 100)
:seq
コマンドを使って 000 から 100 までの連番を生成します。-w
オプションは、3桁のゼロパディングを行います。
[ -d "$i/subdir" ]
:-d
オプションは指定されたパスがディレクトリであるかどうかを確認します。$i/subdir
が存在するかどうかをチェックします。
&& rm -rf "$i/subdir"
:&&
演算子は、前の条件が真(ディレクトリが存在する)場合に次のコマンドを実行します。rm -rf
コマンドは、ディレクトリとその内容を再帰的に強制的に削除します。
まとめ
find
コマンドやシェルのパターンマッチング機能と組み合わせることで、正規表現に基づいたファイルの削除を実現できます。
以下の記事では、mkdirで連番ディレクトリの下にディレクトリを新規作成する方法をまとめています。
リンク