web-dev-qa-db-ja.com

ディレクトリ内のすべてのファイルを削除するにはどうすればよいですか?

ディレクトリ内のすべてのファイルとサブディレクトリを削除しようとしています。 rm -rを使用してすべてのファイルを削除しましたが、トップディレクトリ自体を除いて、すべてのファイルandサブディレクトリを削除します。

たとえば、imagesのようなトップディレクトリがあります。ファイルheader.pngfooter.png、およびサブディレクトリが含まれています。

次に、header.pngfooter.png、およびサブディレクトリを削除しますが、imagesは削除しません。

Linuxでこれを行うにはどうすればよいですか?

78
poorani

トップレベルのディレクトリがimagesである場合は、rm -r images/*を実行します。これは、シェルグロブ演算子*を使用して、images内のすべてのファイルまたはディレクトリでrm -rを実行します。

63
Jordan Lewis

隠しファイルを削除するには、以下を指定する必要があります。

rm -r images/* images/.*

グロブに...が含まれるシェルでは、次のようなエラーが発生します

rm: cannot remove `.' directory `images/.'
rm: cannot remove `..' directory `images/..'

しかし、それは隠しファイルを削除します。

エラーメッセージのないアプローチは、mindepthで検索/削除を使用することです。これはgnu-findです。

find images -mindepth 1 -delete

検索結果に-mindepthまたは-delete述語が不足している可能性があります。その場合、次のことが可能です。

find images/. ! -name . -Prune -exec rm -rf {} +
54
user unknown

ディレクトリ内のすべてのファイルとディレクトリ(hidden onesを含む)を削除するには、次のことを試してください:

  • ls -Abを使用して、すべてのファイル/ディレクトリを照合します

    cd dir_name && rm -rf `ls -Ab`
    
  • findを使用して、すべてのファイル/ディレクトリを照合します

    find dir_name -mindepth 1 -delete
    

    または、find-deleteをサポートしていない場合:

    find dir_name -mindepth 1 -exec rm -rf {}
    
  • フォルダを削除してから再作成する

    rm -rf dir_name && mkdir dir_name
    
  • バッシュで

    shopt -s dotglob  
    rm -rf dir_name/*
    
21
zeekvfu

ディレクトリ内のすべてのregularファイルを再帰的に削除するには、このコマンド(GNUまたはFreeBSD findを想定)で十分です:

find . -type f -delete

これにより、シンボリックリンク(通常のファイルを指すかどうかに関係なく)、ディレクトリ、fifos、ソケット、デバイスなどの非標準ファイルがすべて残ります。

以下も参照してください。

find . ! -type d -delete

ディレクトリ以外のタイプのファイルを削除します。

11
amit singh

このバージョンを試してください:

 rm -r test/*
6
demas

ここでfindコマンドを使用しています:

ステップ1:すべてのファイルを検索して削除します。

find /path/to/directory/ -type f -exec rm {} \;

例:

find /home/user/Desktop/images/ -type f -exec rm {} \;

ステップ2:すべてのサブディレクトリを見つけて削除します。

find /path/to/directory/ -type d -exec rm -R {} \;
3
Mandar Shinde

問題は、ディレクトリを空にすることでした。つまり、隠しファイルを含むディレクトリの内容を削除し、ディレクトリ自体は削除しませんでした。 -mindepth 1を指定したfindコマンドは実際には正しい方法ですが、エラーメッセージを回避するには、-maxdepth 1を使用して結合する必要があります。

find /path/to/dir -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;
3
Maddes

rmの構文は次のとおりです。

rm [OPTION]... FILE...

したがって、適切なパスを明示的に記述する必要があります。

rm -r sub_dir/
0
Zaur Nasibov

次のコマンドを使用してディレクトリを削除できます。

Sudo rm -r directoryname1/2/3/*

3/*以降はディレクトリ全体が削除されます。

例Sudo rm -r Downloads/song/*

Downloads/song内のすべてのファイルが削除されます。

0

これは私にとって完璧に機能し、テストされたいくつかのバリエーションが毎回機能しました。

画像ディレクトリを保持するディレクトリから。

rm -frd ./images/*

前:

images/
    |_ header.png
    |_ footer.png
    |_ subdir/

後:

images/
0
deb-linux-user

現在のディレクトリにあるすべてのファイルとサブディレクトリを非表示のものも含めて、エラーメッセージなしで削除するには

rm -rf .[^.] .??* *

または、親ディレクトリから:

rm -rf images/.[^.] images/.??* images/*

https://serverfault.com/a/47940/269538 から。

0
this

別のオプション:

$ rm -rf /path/to/directory/{*,.*}

ソース: https://askubuntu.com/a/552834/56648

0
Eyal Levin