web-dev-qa-db-ja.com

特定の文字列で始まるすべてのディレクトリを削除します

「graphene-80」で始まるすべてのディレクトリを削除するには、どのコマンドを使用する必要がありますか

「rm」コマンドにオプションとして何を追加できますか?

5
Thouraya

find コマンドの使用:

find /tmp -type d -name 'graphene-80*' -delete

使用される引数:

  • -typeは、ディレクトリのみをフィルタリングし、ファイルの検索を回避します
  • -nameは、引用符の間に定義されたパターンに一致するファイルを検索します
  • -deleteは、findコマンドの結果を削除します

編集:この投稿に示すように-deleteを使用してクリーナー: テンプレートに一致するファイルを検索して削除

4
Kevin Lemaire

パターンgraphene-80*/tmpの直下に一致するディレクトリを削除するには、次を使用します。

rm -rf /tmp/graphene-80*/

ここで、末尾の/は、名前がgraphene-80*パターンに一致するディレクトリのみが削除され、ファイルなどは削除されないようにします。

/tmpの下の他の場所で一致するディレクトリを見つけて、どこにいても削除するには、次のコマンドを使用します。

find /tmp -depth -type d -name 'graphene-80*' -Prune -exec rm -rf {} +

削除されたディレクトリの名前をさらに表示するには、-printの前に-execを挿入します。

-depthオプションは、階層の深さ優先のトラバーサルを引き起こします(そのため、findは、削除したばかりのディレクトリに入ることを試みません)。 -type d -name 'graphene-80*'は、探している名前のディレクトリをテストします。 -Pruneは、見つかったディレクトリを検索パスから削除し(これらのディレクトリ内を調べる必要はありません)、最後に-execが実際の削除を行います。

1
Kusalananda

graphene-80*に一致する名前を持つ空のディレクトリのみを削除するには

find /tmp -type d -name "graphene-80*" -exec rmdir {} +

または

find /tmp -type d -name "graphene-80*" -delete

rmdirおよびGNU findは、空でないものについてエラーを与えるはずです。)

ディレクトリとその内容を削除するには:

find /tmp -type d -name "graphene-80*" -exec rm -r {} \; -Prune

-exec rm +を使用すると、ネストされた一致するディレクトリがある場合、rmからエラーが発生する可能性があります。-Pruneを使用しない場合、findから削除されたばかりに降りようとするため、ディレクトリ。)

0
ilkkachu