精华内容
下载资源
问答
  • linux rmdir 删除非空目录
    2022-07-26 01:37:21

    rm -rf 文件名称

    #使用rm -rf 文件夹名称
    rm -rf jdk-18.0.2
    

    rmdir命令可用来删除“空”的子目录

    #删除app目录
    rmdir app 
    
    更多相关内容
  • rmdir.c/删除非空目录

    千次阅读 2021-05-10 23:26:56
    #include #include "system.h"#include "error.h"#include "quotearg.h"/* The official name of this program (e.g., no `g' ... */#define PROGRAM_NAME "rmdir"//定义宏#define AUTHORS "David MacKenzie"//定义...

    #include #include "system.h"

    #include "error.h"

    #include "quotearg.h"

    /* The official name of this program (e.g., no `g' prefix).  */

    #define PROGRAM_NAME "rmdir"//定义宏

    #define AUTHORS "David MacKenzie"//定义宏

    /* The name this program was run with. */

    char *program_name;//声明全局字符指针变量,只分配一个指针的空间而已

    /* If true, remove empty parent directories.  */

    static bool remove_empty_parents;//暂且不管它的作用,语法的意思是,声明一个全局布尔变量,其值保存在一个静态区,传说中的全局变量^_^

    /* If true, don't treat failure to remove a nonempty directory

    as an error.  */

    static bool ignore_fail_on_non_empty;//暂且不管它的作用,语法的意思是,声明一个全局布尔变量,其值保存在一个静态区,传说中的全局变量^_^

    /* If true, output a diagnostic for every directory processed.  */

    static bool verbose;//暂且不管它的作用,语法的意思是,声明一个全局布尔变量,其值保存在一个静态区,传说中的全局变量^_^

    /* For long options that have no equivalent short option, use a

    non-character as a pseudo short option, starting with CHAR_MAX + 1.  */

    enum

    {

    IGNORE_FAIL_ON_NON_EMPTY_OPTION = CHAR_MAX + 1

    };//初始化一个枚举类型的变量

    static struct option const longopts[] =

    {

    /* Don't name this `--force' because it's not close enough in meaning

    to e.g. rm's -f option.  */

    {"ignore-fail-on-non-empty", no_argument, NULL,

    IGNORE_FAIL_ON_NON_EMPTY_OPTION},

    {"path", no_argument, NULL, 'p'},  /* Deprecated.  */

    {"parents", no_argument, NULL, 'p'},

    {"verbose", no_argument, NULL, 'v'},

    {GETOPT_HELP_OPTION_DECL},

    {GETOPT_VERSION_OPTION_DECL},

    {NULL, 0, NULL, 0}

    };//初始化一个option类型的结构体数组,还是用来处理命令行选项

    /* Return true if ERROR_NUMBER is one of the values associated

    with a failed rmdir due to non-empty target directory.  */

    static bool

    errno_rmdir_non_empty (int error_number)

    {

    return (error_number == RMDIR_ERRNO_NOT_EMPTY);

    }//这个函数让人惊叹其简洁^_^ ,作用是将形参和RMDIR_ERRNO_NOT_EMPTY进行比较,返回比较后的结果,返回值是个布尔类型值

    /* Remove any empty parent directories of DIR.

    If DIR contains slash characters, at least one of them

    (beginning with the rightmost) is replaced with a NUL byte.

    Return true if successful.  */

    static bool

    remove_parents (char *dir)//函数定义部分,接受一个字符指针变量的形参

    {

    char *slash;//声明一个字符指针类型的局部变量

    bool ok = true;//初始化局部布尔类型变量ok为真

    strip_trailing_slashes (dir);

    while (1)

    {

    slash = strrchr (dir, '/');//slash指向dir这个字符串中的最后一个/,如果dir中没有/,则退出while循环

    if (slash == NULL)

    break;

    /* Remove any characters after the slash, skipping any extra

    slashes in a row. */

    while (slash > dir && *slash == '/')

    --slash;

    slash[1] = 0;

    /* Give a diagnostic for each attempted removal if --verbose.  */

    if (verbose)

    error (0, 0, _("removing directory, %s"), dir);

    ok = (rmdir (dir) == 0);//调用rmdir删除后是否成功的状态保存在ok里

    if (!ok)//如果rmdir不成功,则判断是否忽略

    {

    /* Stop quietly if --ignore-fail-on-non-empty. */

    if (ignore_fail_on_non_empty

    && errno_rmdir_non_empty (errno))

    {

    ok = true;

    }

    else

    {

    error (0, errno, "%s", quotearg_colon (dir));

    }

    break;

    }

    }

    return ok;

    }

    void

    usage (int status)//帮助函数

    {

    if (status != EXIT_SUCCESS)

    fprintf (stderr, _("Try `%s --help' for more information.\n"),

    program_name);

    else

    {

    printf (_("Usage: %s [OPTION]... DIRECTORY...\n"), program_name);

    fputs (_("\

    Remove the DIRECTORY(ies), if they are empty.\n\

    \n\

    --ignore-fail-on-non-empty\n\

    ignore each failure that is solely because a directory\n\

    is non-empty\n\

    "), stdout);

    fputs (_("\

    -p, --parents   Remove DIRECTORY and its ancestors.  E.g., `rmdir -p a/b/c' is\n\

    similar to `rmdir a/b/c a/b a'.\n\

    -v, --verbose   output a diagnostic for every directory processed\n\

    "), stdout);

    fputs (HELP_OPTION_DESCRIPTION, stdout);

    fputs (VERSION_OPTION_DESCRIPTION, stdout);

    printf (_("\nReport bugs to .\n"), PACKAGE_BUGREPORT);

    }

    exit (status);

    }

    int

    main (int argc, char **argv)

    {

    //声明main函数里的变量

    bool ok = true;

    int optc;

    initialize_main (&argc, &argv);

    program_name = argv[0];

    setlocale (LC_ALL, "");

    bindtextdomain (PACKAGE, LOCALEDIR);

    textdomain (PACKAGE);

    atexit (close_stdout);

    remove_empty_parents = false;//初始化全局变量

    while ((optc = getopt_long (argc, argv, "pv", longopts, NULL)) != -1)

    {//解析命令行选项,根据选项,设置全局变量的值

    switch (optc)

    {

    case 'p':

    remove_empty_parents = true;

    break;

    case IGNORE_FAIL_ON_NON_EMPTY_OPTION:

    ignore_fail_on_non_empty = true;

    break;

    case 'v':

    verbose = true;

    break;

    case_GETOPT_HELP_CHAR;

    case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);

    default:

    usage (EXIT_FAILURE);

    }

    }

    if (optind == argc)//此程序需要命令行参数

    {

    error (0, 0, _("missing operand"));

    usage (EXIT_FAILURE);

    }

    for (; optind < argc; ++optind)

    {//在这个for循环里,处理每一个命令行参数,也就是删除每一个列出来的目录

    char *dir = argv[optind];

    /* Give a diagnostic for each attempted removal if --verbose.  */

    if (verbose)

    error (0, 0, _("removing directory, %s"), dir);

    if (rmdir (dir) != 0)//如果调用rmdir删除dir不成功,则执行下面的代码,判断是否忽略非空的目录,采取措施

    {

    if (ignore_fail_on_non_empty

    && errno_rmdir_non_empty (errno))

    continue;//如果满足上面的条件,直接跳到下一个for循环,否则打印错误,并将ok的值设置为假

    error (0, errno, "%s", quotearg_colon (dir));

    ok = false;

    }

    else if (remove_empty_parents)//否则,如果成功删除了dir,并且remove_empty_parents的值为真,则执行:

    {

    ok &= remove_parents (dir);//先调用remove_parents删除dir,然后用ok的值和函数的返回值进行并

    }

    }

    exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);//main函数退出

    }

    展开全文
  • 如何删除linux系统下的非空目录

    千次阅读 2022-01-24 12:37:26
    与命令不同 rmdir, rm 可以删除空目录和非空目录。 默认情况下,在没有任何选项的情况下使用时 rm 不会删除目录 如下图所示: 首先,先查看一下我们有几个目录: 有两个=>分别是:First_linux_progarm 与 test1 尝试...

    标题: 如何删除linux系统下的非空目录

    删除目录的常用shell命令为: rm
    rm 是一个用于删除文件和目录的命令行实用程序。与 rmdir命令不同, rm 可以删除空目录和非空目录。( rmdir命令是什么的知识点补充在最下边! )

    默认情况下,在没有任何选项的情况下使用时 rm 不会删除目录

    如下图所示:
    首先,先查看一下我们有几个目录:
    有两个=>分别是:First_linux_progarm 与 test1
    在这里插入图片描述
    尝试使用rm删除test1
    在这里插入图片描述


    如何删除linux系统下的空目录? =>如果要删除空目录,请使用 -d(–dir) 选项。

    即:

    rm -d 目录名
    

    如何删除linux系统下的非空目录?=>如果要删除非空目录和其中的所有内容,请使用 -r(–recursive 或 -R) 选项。

    即:

    rm -r 目录名
    

    如下图所示:

    #先用ls 查看有几个目录 =>有两个 First_linux_progarm 与 test1 .
    #再用 rmdir尝试删除First_linux_progarm 目录 =>显示First_linux_progarm不为空,不能删除 (一会再解释rmdir命令是什么) .
    #此时,我们启用 rm -r First_linux_progarm .
    #然后再使用ls 查看目录时,只剩下test1了 .

    在这里插入图片描述


    知识点补充:
    rmdir 命令也是删除目录的shell命令!
    只不过,
    rmdir 是一个用于删除 空目录 的命令行实用程序。只有当目录 为空 时才能删除目录。

    例如,要删除名为 linuxmi 的目录,请键入:

    linuxidc@linuxidc:~$ rmdir linuxmi
    

    如果目录 不为空 ,就会报错:

    rmdir: 删除 'linuxmi' 失败: 目录非空
    
    展开全文
  • linux c 删除非空目录

    2021-04-18 11:09:12
     也可以通过shell命令rm -rf删除非空目录。但在程序中若要调用shell命令必须通过system或者exec函数簇启动一个进程。这样一是耗费系统资源,降低程序执行的效率。二是无法知道执行的结果。故自己实现一个删除非空...

    Linux下系统api int rmdir(const char *pathname);可以删除目录。但使用rmdir函数时,目录必须为空,否则调用失败,函数返回-1,执行成功时,函数返回0。
      
      也可以通过shell命令rm -rf删除掉非空目录。但在程序中若要调用shell命令必须通过system或者exec函数簇启动一个进程。这样一是耗费系统资源,降低程序执行的效率。二是无法知道执行的结果。故自己实现一个删除非空目录的函数,下面是函数的几个要点:
      
      1.若要删除一个目录,必须将给目录下的文件全部删除,系统调用int remove(const char * pathname)可以删除一个普通文件;
      
      2.需要遍历目录中的每一项,而目录中可能还有目录,故需要用递归调用;
      
      3.每个目录下会有两个默认的目录.和..分别代表当前目录和上一目录,在遍历的时候需要忽略它们;

    4.递归结束的条件是遍历到的文件为普通文件(此时会将普通文件删除);

    5.当一个目录中的内容全部被删除之后,便可以删除该目录了。

    代码实现如下所示:

    #include <sys/stat.h>
    #include <dirent.h>
    #include <fcntl.h>
    
    /**
    * 递归删除目录(删除该目录以及该目录包含的文件和目录)
    * @dir:要删除的目录绝对路径
    */
    int remove_dir(const char *dir)
    {
    	char cur_dir[] = ".";
    	char up_dir[] = "..";
    	char dir_name[128];
    	DIR *dirp;
    	struct dirent *dp;
    	struct stat dir_stat;
    
    	// 参数传递进来的目录不存在,直接返回
    	if ( 0 != access(dir, F_OK) ) {
    		return 0;
    	}
    
    	// 获取目录属性失败,返回错误
    	if ( 0 > stat(dir, &dir_stat) ) {
    		perror("get directory stat error");
    		return -1;
    	}
    
    	if ( S_ISREG(dir_stat.st_mode) ) {	// 普通文件直接删除
    		remove(dir);
    	} else if ( S_ISDIR(dir_stat.st_mode) ) {	// 目录文件,递归删除目录中内容
    		dirp = opendir(dir);
    		while ( (dp=readdir(dirp)) != NULL ) {
    			// 忽略 . 和 ..
    			if ( (0 == strcmp(cur_dir, dp->d_name)) || (0 == strcmp(up_dir, dp->d_name)) ) {
    				continue;
    			}
    			
    			sprintf(dir_name, "%s/%s", dir, dp->d_name);
    			remove_dir(dir_name);   // 递归调用
    		}
    		closedir(dirp);
    
    		rmdir(dir);		// 删除空目录
    	} else {
    		perror("unknow file type!");	
    	}
    	
    	return 0;
    }
    


     

    展开全文
  • Linux删除非空目录

    千次阅读 2021-08-01 14:30:48
    正常情况下我们使用 rmdir删除空目录,那么当我们要删除的目录先含有文件时,...这时我们需要使用一下指令进行删除一个非空目录 sudo rm -rf … 一定要加前面的sudo提供权限 使用这条命令就会成功删除。 ...
  • rmdir命令 – 删除目录

    千次阅读 2021-05-09 01:38:38
    当要删除非空目录时,就要使用带有“-R”选项的rm命令。rmdir命令的“-p”参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录。语法格式 : rmdir [参数] [目录名称]常用参数:-p用递归的方式删除指定...
  • 删除非空目录linuxLinux file system consist of directories. A system administrator generally work with directories and related operations. In this tutorial we will look how to delete empty or nonempty ...
  • * 递归删除目录(删除目录以及该目录包含的文件和目录) * @dir:要删除目录绝对路径 */ int remove_dir(const char *dir) { char cur_dir[] = "."; char up_dir[] = ".."; char dir_name[128]; DIR *dir
  • 如何使用 rmdir 命令删除目录

    千次阅读 2022-05-20 18:23:28
    rmdir 是您将在开始时学习但很少使用的基本 Linux 命令之一。 为什么? 因为听起来好像 rmdir 用于删除目录(即文件夹),但事实是,默认情况下,它只删除空目录。...删除非空目录 如果您尝试删除包含文件和
  • 删除目录大家第一反应应该和我一样都是rmdir 但今天有一个目录里因为配置有好多文件直接烦死,不能rmdir直接删除,要是使用这个指令还要先用cd指令转换到该目录下一个个删除,实在是有点麻烦,最后终于还是找到了...
  • linux删除非空目录

    万次阅读 多人点赞 2015-01-22 11:53:07
    删除非空文件夹的命令要使用 rm,而不是rmdir。 使用方式:rm [-rf] dirName  参数:-r 将目录及以下之档案亦逐一删除,-f 强行删除,不需询问。 rmdir命令是用来删除空的目录。 使用方式:rmdir [-p] ...
  • Linux下如何删除非空目录

    千次阅读 2020-09-27 21:46:26
    在进行非空目录删除时,我一直以为使用 rmdir 命令即可,但是系统提示该命令不可以删除非空目录 经过查阅资料发现删除非空目录需要使用 rm -rf 'filename' 其中参数 -f 表示force. 使用了该参数表示强制删除 ...
  • linuxmkdir命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。命令格式:mkdir[选项]目录...命令功能:通过mkdir命令可以实现在指定位置创建...
  • 但是发现它无法删除非空目录. 后来发现了原来应该使用命令 rm -rf 目录名 其中参数-f表示force.使用了这个参数就不会提示你是否要删除了. 转载于:https://www.cnblogs.com/aboutblank/p/3272131.html...
  • linux删除目录的方法有几个不同的命令,如rmdir这个只能删除空目录,如果想删除非空目录我们需要使用白领命令来实现,下面我来给大家介绍介绍,rm命令在linux中创建文件很容易,系统中随时会有文件变得过时且...
  • 做usbcopy程序的时候,发现linux下除了删除命令 rm -fr 目录名 删除某个非空文件夹,没有直接可以删除非空目录的函数。只好自己写个函数实现递归删除。(经有限次测试)int deletedir(char *fp) { int n = 0; DIR *s=...
  • Linux 删除目录rmdir命令使用总结。
  • Linux删除目录非空的文件夹命令

    千次阅读 2018-10-24 16:55:47
    linux删除目录可以用rmdir,但是当目录非空时,就不可以用这个命令了。此时使用直接rm -rf 即可: rm -rf 目录名字 其中:  -r 就是向下递归,不管有多少级目录,一并删除  -f 就是直接强行删除,不作任何提示....
  • linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。接下来通过本文给大家介绍Linux 删除文件夹和文件的命令(强制删除包括非空文件),感兴趣的朋友跟随...
  • Linux删除文件和目录

    万次阅读 多人点赞 2020-06-03 08:19:25
    rmdir 删除空文件夹 (如果文件夹非空,不能用这个命令) 用法 rmdir 空文件夹名称 示例 rmdir ./dir2/dir1 再 ls ./dir2 看一看,dir1 还有没有? rm删除一个文件或文件夹 用法 rm 文件名称 rm -rf 文件夹...
  • `rmdir` 命令用于删除目录。如果目录中有文件则不能使用该命令进行删除。`rmdir` 的全称是 `remove directory`。
  • Linux删除文件夹之rmdir命令

    千次阅读 2021-05-16 18:40:38
    1. rmdir命令简介本文主要介绍rmdir命令,该命令用于删除Linux上的空目录。...--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;-v或-verboes:显示命令的详细执行过程;--h...
  • rmdir 无法删除非空目录。 rm -rf 可以递归,强制,删除目录 转载于:https://www.cnblogs.com/everfight/p/rm_dir.html
  • Python的OS模块自带rmdir和removedirs函数用于删除目录,但是两者都不能删除非空目录,以下代码定义了一个函数 remove_dir 用于删除非空目录。#作者官网 http://www.phpwechat.comimport osdef remove_dir(dir):dir ...
  • import os from time import sleep test_path = r'd:\test' ...sleep的作用:如果目录下存储了大量文件,删除时可能磁盘需要响应一段时间,如果紧接着执行其他创建目录等操作,可能会报错。 Window命令行: rmdir.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,019
精华内容 4,807
关键字:

linux rmdir 删除非空目录