「rm files *」はすべてのサブディレクトリからすべての一致を削除しますか?


13

wordpress-891.sql(サブディレクトリ内ではなく)現在のディレクトリから似たようなファイルを削除したい。

ウィルrm wordpress-*.sqlトリックを行うか、それはまた、サブディレクトリから一致するものを削除しますか?


1
余談ですが、他のすべての答えは正しいものですが、もう1つねじれがあります。実際には、ワイルドカードを展開するのはrmコマンドではなくbashです。ディレクトリに10個の一致するファイルがある場合、rmはワイルドカードを表示せず、個別の引数を10個表示します。rmで展開する場合は、引数を一重引用符で囲む必要があります。rmの場合、違いはありませんが、他のコンテキストでは影響する場合があります。通常、ワイルドカードがapt-getパッケージなどのファイル以外のものを指す場合。
ケビン・キーン

3
@KevinKeane、rmファイル名の展開を行いません... rm "foo*"名前にリテラルアスタリスクを含むファイルを削除しようとします。
-ilkkachu

回答:


20

いいえ。通常のグロビング*は再帰的ではなく、そうでもありませんrm

ディレクトリ名が一致する場合、それは削除されません- -rディレクトリを削除するにはフラグが必要です。

そのため、これらのファイルを削除することが確実な場合は、安全に実行できます。

rmインタラクティブにすることもできます

rm -i wordpress-*.sql

次に、各ファイルを削除する前に確認を求めます


14

はい、それはあなたのためのトリックを行い、現在のディレクトリ内のそのスキーマを持つすべてのファイルを削除します。いいえ、サブディレクトリ内のファイルは削除されません。

次のようなコマンドを実行するとどうなるかわからないときはいつでも:

rm wordpress-*.sql

次に、それを使用して実行しlsます:

ls wordpress-*.sql

出力に表示されるファイルは、削除されるファイルです。

次のようなリストを取得しようとしfoo*ている場合、-dswitch with lsを使用して、etcという名前のディレクトリにファイルがリストされないようにすることをお勧めしますfoobar/

ls -d foo*

このトリックは、ジョブを再帰的に実行するために使用されないコマンドに対して機能します。

他にできることは、希望する入力を入力することです。たとえばwordpress-*、次にCtrl+ Alt+を押す*と、すべての一致がコマンドの前に自動的に入力されます。


4
私のお気に入りの方法:printf "%s\n" wordpress-*.sql
wjandrea

1
エコーのようなふりをすることもできecho rm file*ます。特に、のような敵対的なファイル名を探してください-rf
eckes

@eckes:rm ./*またはのいずれかを使用して、これらをより安全にカバーできますrm -- *
デビッドフォースター

はい、または使用xargs -0@DavidFoerster
eckes

に行きls foo*、というディレクトリがあるfoobar場合、そのディレクトリの内容のリストも取得するため、プレーンlsrmヒットするものに最適な方法ではありません
-ilkkachu

12

いいえ、rmサブディレクトリを再帰しません。

サブディレクトリ内のファイル削除する方法については、すべてのサブディレクトリ内の一致するファイル削除する-SuperUserを参照してください。

何か重要なものを誤って削除することが心配な場合は、gvfs-trash(ファイルrmを完全に削除する)の代わりに(ファイルをゴミ箱に送る)を使用してください。


おかげでgvfs-trash、今日はほとんどそれを使用しない言及学んだ何か...
ジョージUdosen

-1

などの一致するすべてのファイルを見つけて削除するwordpress-*.sql場合は、findコマンドを使用できます。:)

たとえば、wordpress-*.sqlアンダーtest_dirで一致するすべてのファイルを削除するには、次のようにします。

cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;

findプログラムが実際に一致するファイルを見つけるたびに、-execオプションの後のコマンドを実行しようとします。この場合rm -f {}、実行{}され、一致するファイル名に変更されます。例えば

rm -f wordpress-169.sql

-maxdepthオプションでサブディレクトリの深さを設定することもできます。

cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;

-maxdepth他のオプションの前にオプションを指定する必要があることに注意してください。そうしないと、実際に見たくない結果に出会う可能性があります。


1
OPは逆のことを望んでいます。サブディレクトリに再帰しないことです。
メレビウス

2
GNU find:「オプションは、オプションの前に指定されたテストを含むすべてのテストに影響します」、以下のオプションのリストにはが含まれ-maxdepthます。使用するの-exec rm -f {} +ではなく-exec \;、さらに良い、ちょうど-delete
-ilkkachu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.