Linuxの条件付き再帰的RM


2

私は以下のフォルダ構造を持っています:

parent
 - folder1
   - main1.x
   - main1.y
   - main1.z
   - main1-626262.x
   - main1-626263.x
   - main1-626264.x
   - main1-626265.x
   - main1-626266.x
   - main1-626267.x
 - folder2
   - main2.x
   - main2.y
   - main2.z
   - main2-726262.x
   - main2-726263.x
   - main2-726264.x
   - main2-726265.x
   - main2-726266.x
   - main2-726267.x

今、私は削除したいです。 main-*********.x

だから、私の必要なフォルダ構造:

parent
 - folder1
   - main1.x
   - main1.y
   - main1.z
 - folder2
   - main2.x
   - main2.y
   - main2.z

それで、どうすればこれを達成できますか?

回答:


6

これを試して:

find * -name 'main?-*.x' | xargs echo rm -rf

上記は、不要なディレクトリを削除するコマンドを出力します( なしで 実際にそれらを削除します。問題ない場合は、単に印刷されたコマンドを実行するか、または

find * -name 'main?-*.x' | xargs rm -rf

1
main- 一貫していません。名前は実際の名前によって異なります main.x
zengr

それから修正してください -name あなたのニーズに合うオプション。次のようなワイルドカードを使うことができます。 ? そして *。あなたも使用できます grep 間に find そして xargs 削除するディレクトリをフィルタリングします。
netvope

私はそれに打撃を与えて質問を更新します。ありがとう
zengr

必要ない場合は、-rを使用しないでください。
matthias krull

2

簡単なコマンド:

rm `find ./ -name 'main?-*.x'` -rf

がんばろう!


1
rm */*[0-9][0-9][0-9][0-9][0-9][0-9].*

しかし、評価するにはbashやshが必要です。 C-Shellがうまくいかない場合は、似たような構文が利用可能になるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.