ディレクトリ内のすべてのファイルを削除する方法は?

ディレクトリ内のすべてのファイルを削除する方法は?

ディレクトリ内のすべてのファイルとサブディレクトリを削除しようとしています。以前はすべてのファイルを削除しましたrm -rが、すべてのファイルを削除したいです。そして最上位ディレクトリ自体を除くサブディレクトリ。

たとえば、ファイルとサブディレクトリをimages含む。header.pngfooter.png

header.pngこれで、サブディレクトリを削除したいがfooter.png削除しませんimages

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

答え1

最上位ディレクトリの名前が指定されている場合は、imagesを実行しますrm -r images/*。 NET Frameworkでシェルglob*演算子を使用します。rm -rimages

答え2

隠しファイルを削除するには、次のように指定する必要があります。

rm -r images/* images/.*

.以下を含むシェルの場合、..次のエラーが発生します。

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

ただし、隠しファイルは削除されます。

エラーメッセージがない方法は、検索/削除とminlengthを使用することです。これはgnu-findです。

find images -mindepth 1 -delete

-mindepthあなたの検索や条件が欠落している可能性があり-delete、その場合は次のことができます。

find images/. ! -name . -prune -exec rm -rf {} +

答え3

すべてのファイルとディレクトリ(含まれている)を削除します。隠された)ディレクトリで次のことを試すことができます。

  • 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/*
    

答え4

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

 rm -r test/*

関連情報