GNU/Linux >> Linux の 問題 >  >> Linux

NIX標準ライブラリを使用してフォルダを削除せずに、フォルダ内のすべてのファイルを削除するにはどうすればよいですか?

#include <stdio.h>
#include <dirent.h>

int main()
{
    // These are data types defined in the "dirent" header
    DIR *theFolder = opendir("path/of/folder");
    struct dirent *next_file;
    char filepath[256];

    while ( (next_file = readdir(theFolder)) != NULL )
    {
        // build the path for each file in the folder
        sprintf(filepath, "%s/%s", "path/of/folder", next_file->d_name);
        remove(filepath);
    }
    closedir(theFolder);
    return 0;
}

system() 経由で新しいシェルを生成したくない またはそのようなもの - 非常に単純なことを行うには多くのオーバーヘッドがあり、システムで利用できるものについて不必要な仮定 (および依存関係) が生じます。


C/C++ では、次のことができます:

system("exec rm -r /tmp/*")

Bash では、次のことができます:

rm -r /tmp/*

これにより、/tmp 内のすべてが削除されますが、/tmp 自体は削除されません。


ワイルドカード * を使用する 任意のタイプの拡張子を持つすべてのファイルを削除できます。

system("exec rm -r /tmp/*")


Linux
  1. Git リポジトリを削除しますが、すべてのファイルを保持します

  2. bashスクリプトで最新の3つを除くすべてのファイルを削除します

  3. ディレクトリ内の 1000 個を除くすべてのランダム ファイルを削除する

  1. コマンドラインを使用してディレクトリ内のファイルの数を取得するにはどうすればよいですか?

  2. 最後の(最新の)20を除くフォルダ内のすべてのファイルを削除しますか?

  3. Linux でファイルではなくディレクトリ ツリーをコピーするにはどうすればよいですか?

  1. 特定のフォルダ内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?

  2. すべてのファイルを取得しますが、ファイルは配列内にあります– Bash?

  3. システム上のすべてのSubversionリポジトリを見つける方法は?