ディレクトリ内のすべてのファイルとサブディレクトリを削除しようとしています。 rm -r
を使用してすべてのファイルを削除しましたが、トップディレクトリ自体を除いて、すべてのファイルandサブディレクトリを削除します。
たとえば、images
のようなトップディレクトリがあります。ファイルheader.png
、footer.png
、およびサブディレクトリが含まれています。
次に、header.png
、footer.png
、およびサブディレクトリを削除しますが、images
は削除しません。
Linuxでこれを行うにはどうすればよいですか?
トップレベルのディレクトリがimages
である場合は、rm -r images/*
を実行します。これは、シェルグロブ演算子*
を使用して、images
内のすべてのファイルまたはディレクトリでrm -r
を実行します。
隠しファイルを削除するには、以下を指定する必要があります。
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 {} +
ディレクトリ内のすべてのファイルとディレクトリ(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/*
ディレクトリ内のすべてのregularファイルを再帰的に削除するには、このコマンド(GNUまたはFreeBSD find
を想定)で十分です:
find . -type f -delete
これにより、シンボリックリンク(通常のファイルを指すかどうかに関係なく)、ディレクトリ、fifos、ソケット、デバイスなどの非標準ファイルがすべて残ります。
以下も参照してください。
find . ! -type d -delete
ディレクトリ以外のタイプのファイルを削除します。
このバージョンを試してください:
rm -r test/*
ここで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 {} \;
問題は、ディレクトリを空にすることでした。つまり、隠しファイルを含むディレクトリの内容を削除し、ディレクトリ自体は削除しませんでした。 -mindepth 1を指定したfindコマンドは実際には正しい方法ですが、エラーメッセージを回避するには、-maxdepth 1を使用して結合する必要があります。
find /path/to/dir -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;
rmの構文は次のとおりです。
rm [OPTION]... FILE...
したがって、適切なパスを明示的に記述する必要があります。
rm -r sub_dir/
次のコマンドを使用してディレクトリを削除できます。
Sudo rm -r directoryname1/2/3/*
3/*以降はディレクトリ全体が削除されます。
例Sudo rm -r Downloads/song/*
Downloads/song
内のすべてのファイルが削除されます。
これは私にとって完璧に機能し、テストされたいくつかのバリエーションが毎回機能しました。
画像ディレクトリを保持するディレクトリから。
rm -frd ./images/*
前:
images/
|_ header.png
|_ footer.png
|_ subdir/
後:
images/
現在のディレクトリにあるすべてのファイルとサブディレクトリを非表示のものも含めて、エラーメッセージなしで削除するには:
rm -rf .[^.] .??* *
または、親ディレクトリから:
rm -rf images/.[^.] images/.??* images/*