- ベストアンサー
linuxでのdir削除について
linuxコマンドに詳しい方ご教授ください。 linuxでdirを削除したいのですが 条件があります。 あるdirの下にある特定名のdir(dir名は固定)があるdirのみを一括で削除したいのですがこういったことはできるでしょうか? できれば1コマンドがありがたいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
おっと、これだと「hoge」がディレクトリでない場合も 適用されますね。 if [[ "`ls ${dir}`" = "hoge"]] && [[ -d ${dir}"/"`ls ${dir}` ]] にしないといけませんね。
その他の回答 (5)
- Ultra-Hetare
- ベストアンサー率38% (204/526)
>>下階層に”hoge"というdirのみのdirを上階層のdirと一緒に削除する 配下にhogeというディレクトリが1つだけある場合に削除 [user@host ~/findtest]$ ls -R 1 2 3 4 5 6 7 ./1: fuga hoge ./1/fuga: ./1/hoge: ./2: hoge ./2/hoge: ./3: foo ./3/foo: ./4: hoge ./4/hoge: ./5: hage hoge ./5/hage: ./5/hoge: ./6: hoge ./6/hoge: ./7: [user@host ~/findtest]$ [user@host ~/findtest]$ [user@host ~/findtest]$ for dir in * ; do if [[ "`ls ${dir}`" = "hoge" ]] ; then rm -rf ${dir} ; fi ; done [user@host ~/findtest]$ ls -R 1 3 5 7 ./1: fuga hoge ./1/fuga: ./1/hoge: ./3: foo ./3/foo: ./5: hage hoge ./5/hage: ./5/hoge: ./7: [user@host ~/findtest]$ これでいかがでしょう?
- Ultra-Hetare
- ベストアンサー率38% (204/526)
こういう事がやりたいのでは無いでしょうか。 ・配下に固定のdir名が含まれるdirを根こそぎ削除する。 [user@host ~]$ mkdir findtest [user@host ~]$ cd findtest/ [user@host ~/findtest]$ mkdir -p {1,2,3/hoge,4/fuga,5/hoge} [user@host ~/findtest]$ ls -R 1 2 3 4 5 ./1: ./2: ./3: hoge ./3/hoge: ./4: fuga ./4/fuga: ./5: hoge ./5/hoge: [user@host ~/findtest]$ rm -rf `find . -type d -name hoge -exec dirname {} \; 2>/dev/null` [user@host ~/findtest]$ ls -R 1 2 4 ./1: ./2: ./4: fuga ./4/fuga: [user@host ~/findtest]$
補足
すいません。私の質問に条件のぬけがありました。 回答していただいた内容では、下階層に”hoge"というdirが全て削除されてしまいます。 私がやりたいのはこの例の場合でいうと下階層に”hoge"というdirのみのdirを上階層のdirと一緒に削除するということでした。 私の質問に不備がありました。 申し訳ございません。
- f272
- ベストアンサー率46% (8477/18147)
私なら,あるdirをカレントディレクトリにして,その下にある特定名のdirをfooとすれば find . -type d -name foo -print で一応確認しておいて find . -type d -name foo -delete で削除する。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>あるdirの下にある特定名のdir(dir名は固定)があるdirのみ 「あるdir」に移動して、それが、 ls */特定名のdir で引っかかるものなら、 rm -rf */特定名のdir こんだけ。 (このコマンド危険なので注意してください) ってこと?
- t_ohta
- ベストアンサー率38% (5241/13712)
正規表現を使って削除するディレクトリを指定できます。
お礼
なんとなくイメージできてきました。 試してみます。 ありがとうございました。