• ベストアンサー

linuxでのdir削除について

linuxコマンドに詳しい方ご教授ください。 linuxでdirを削除したいのですが 条件があります。 あるdirの下にある特定名のdir(dir名は固定)があるdirのみを一括で削除したいのですがこういったことはできるでしょうか? できれば1コマンドがありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

おっと、これだと「hoge」がディレクトリでない場合も 適用されますね。 if [[ "`ls ${dir}`" = "hoge"]] && [[ -d ${dir}"/"`ls ${dir}` ]] にしないといけませんね。

Kasaoka-Taroh
質問者

お礼

なんとなくイメージできてきました。 試してみます。 ありがとうございました。

その他の回答 (5)

回答No.5

>>下階層に”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]$ これでいかがでしょう?

回答No.4

こういう事がやりたいのでは無いでしょうか。 ・配下に固定の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]$

Kasaoka-Taroh
質問者

補足

すいません。私の質問に条件のぬけがありました。 回答していただいた内容では、下階層に”hoge"というdirが全て削除されてしまいます。 私がやりたいのはこの例の場合でいうと下階層に”hoge"というdirのみのdirを上階層のdirと一緒に削除するということでした。 私の質問に不備がありました。 申し訳ございません。

  • f272
  • ベストアンサー率46% (8477/18147)
回答No.3

私なら,あるdirをカレントディレクトリにして,その下にある特定名のdirをfooとすれば find . -type d -name foo -print で一応確認しておいて find . -type d -name foo -delete で削除する。

回答No.2

>あるdirの下にある特定名のdir(dir名は固定)があるdirのみ 「あるdir」に移動して、それが、 ls */特定名のdir で引っかかるものなら、 rm -rf */特定名のdir こんだけ。 (このコマンド危険なので注意してください) ってこと?

  • t_ohta
  • ベストアンサー率38% (5241/13712)
回答No.1

正規表現を使って削除するディレクトリを指定できます。

関連するQ&A