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コマンドを使用する必要がありますか?
ターゲットディレクトリが空の場合、findを使用し、ディレクトリのみでフィルタリングし、名前でフィルタリングし、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 {} \;
これにより、プレーンファイルではなくディレクトリのみが削除されるようにするには、「-type d」引数を使用します(コメントで提案されているとおり)。
find . -name a -type d -exec rm -rf {} \;
「{}」は、検出された各ファイル「a」の置換です-execコマンドは、置換によってそれぞれに対して実行されます。
これも機能します-「a」と呼ばれるすべてのフォルダーとその内容を削除します。
rm -rf `find -type d -name a`
foo
という名前のすべてのディレクトリを削除するには、次を実行します。
find -type d -name foo -a -Prune -exec rm -rf {} \;
他の答えには、重要なものがありません:-Prune
オプション。 -Prune
がない場合、GNU findは一致する名前のディレクトリを削除し、そのディレクトリに再帰して、一致するディレクトリをさらに検索します。 -Prune
オプションは、条件に一致したディレクトリに再帰しないように指示します。
rsync
を使用して進行中の作業のバックアップを行う前に、node_modules
フォルダーを削除しようとしてここに行きました。重要な要件は、node_modules
フォルダーをネストできることです。そのため、-Prune
オプションが必要です。
まず、これを実行して、削除するフォルダーを視覚的に確認しました。
find -type d -name node_modules -Prune
次に、これを実行してそれらをすべて削除しました:
find -type d -name node_modules -Prune -exec rm -rf {} \;
ピスタッシュのおかげで
find ./ -name "FOLDERNAME" | xargs rm -Rf
トリックを行う必要があります。警告:誤って.
または/
をxargs rm -Rf
に送り込んだ場合、OSの再インストールを必要とするオプションなしでコンピューター全体が削除されます。
私のような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 {} \;
もう一つ:
"-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)
複数の回答を組み合わせて、LinuxとMacOSの両方で動作するコマンドを次に示します
rm -rf $(find . -type d -name __pycache__)