Linuxで、フォルダー階層の奥深くにネストされている特定の名前のフォルダーを削除するにはどうすればよいですか?
次のパスはフォルダの下にあり、。という名前のすべてのフォルダを削除したいと思いますa
。
1/2/3/a
1/2/3/b
10/20/30/a
10/20/30/b
100/200/300/a
100/200/300/b
親フォルダーからどのLinuxコマンドを使用する必要がありますか?
ターゲットディレクトリが空の場合は、検索を使用し、ディレクトリのみでフィルタリングし、名前でフィルタリングし、rmdirを実行します。
find . -type d -name a -exec rmdir {} \;
その内容を再帰的に削除したい場合は、またはに置き換えて-exec rmdir {} \;
ください。他の回答には、これらのバージョンの詳細が含まれています。-delete
-prune -exec rm -rf {} \;
次のように、名前「a」にfindを使用し、rmを実行して、希望に応じて名前が付けられたものを削除します。
find . -name a -exec rm -rf {} \;
最初にlsを使用してテストしてリストします。
find . -name a -exec ls {} \;
これにより、プレーンファイルではなくディレクトリのみが削除されるようにするには、「-typed」引数を使用します(コメントで提案されているように)。
find . -name a -type d -exec rm -rf {} \;
「{}」は、見つかった各ファイル「a」の置換です。execコマンドは、置換によってそれぞれに対して実行されます。
これも機能します。「a」と呼ばれるすべてのフォルダとその内容が削除されます。
rm -rf `find . -type d -name a`
node_modules
を使用して進行中の作業のバックアップを実行する前に、ここでフォルダを削除しようとしましたrsync
。重要な要件は、node_modules
フォルダーをネストできることです。そのため、-prune
オプションが必要です。
まず、これを実行して、削除するフォルダーを視覚的に確認しました。
find . -type d -name node_modules -prune
次に、これを実行してすべてを削除しました。
find . -type d -name node_modules -prune -exec rm -rf {} \;
ピスタッシュのおかげで
、という名前のすべてのディレクトリを削除するには、次のコマンドをfoo
実行します。
find -type d -name foo -a -prune -exec rm -rf {} \;
他の答えは重要なことを欠いています:-prune
オプション。がない-prune
場合、GNU findは一致する名前のディレクトリを削除し、それを繰り返して一致するディレクトリをさらに検索しようとします。この-prune
オプションは、条件に一致するディレクトリに再帰しないように指示します。
このコマンドは私のために働きます。それは再帰的にその仕事をします
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
。-現在のフォルダ
"node_modules"-フォルダ名
find ./ -name "FOLDERNAME" | xargs rm -Rf
トリックを行う必要があります。警告、誤って.
または/
をxargs rm -Rf
コンピュータ全体に送り込んだ場合、それを元に戻すオプションなしで削除され、OSの再インストールが必要になります。
複数の回答を組み合わせて、LinuxとMacOSの両方で機能するコマンドを次に示します。
rm -rf $(find . -type d -name __pycache__)
私は100以上のファイルを持っていました
log-12
log-123
log-34
....
上記の答えは私にはうまくいきませんでした
しかし、次のコマンドは私を助けました。
find . -name "log-*" -exec rm -rf {} \;
私はそれがで始まるファイルとフォルダの両方を削除するように与え-type
ました.
log-
ファイルがあっても、フォルダを再帰的にrm -rf
削除します。
フォルダだけが必要な場合
find -type d -name "log-*" -exec rm -rf {} \;
ファイルのみ
find -type f -name "log-*" -exec rm -rf {} \;
もう1つ:
"-exec rm -rf {} \;" can be replaced by "-delete"
find -type d -name __pycache__ -delete # GNU find
find . -type d -name __pycache__ -delete # POSIX find (e.g. Mac OS X)
構造内のいくつかのフォルダー内のフォルダー名内の式を探していたため、以前のコメントは機能しませんでした
以下は、次のような構造のフォルダーに対して機能します。
b / d / ab / cd/fileまたはc/d / e / f / a / f / file
rm-rfを使用する前に確認するには
find . -name *a* -type d -exec realpath {} \;
コンテンツを含むフォルダーを再帰的に削除する
find . -name *a* -type d -exec rm -rf {} \;
path / to / the/foldersを検索します-maxdepth1-name "my_ *" -type d -delete