首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

删除所有空目录,但保留根目录

要删除所有空目录但保留根目录,可以使用以下几种方法:

方法一:使用 find 命令(适用于 Linux 和 macOS)

代码语言:txt
复制
find /path/to/root/directory -type d -empty -exec rm -r {} \;

解释:

  • find /path/to/root/directory:指定要搜索的根目录。
  • -type d:只查找目录。
  • -empty:只查找空目录。
  • -exec rm -r {} \;:对找到的每个空目录执行删除操作。

方法二:使用 rmdir 命令(适用于 Linux 和 macOS)

代码语言:txt
复制
find /path/to/root/directory -type d -empty | xargs rmdir

解释:

  • find /path/to/root/directory -type d -empty:查找所有空目录。
  • xargs rmdir:将找到的空目录传递给 rmdir 命令进行删除。

方法三:使用 PowerShell(适用于 Windows)

代码语言:txt
复制
Get-ChildItem -Path "C:\path\to\root\directory" -Recurse -Directory | Where-Object { $_.GetFiles().Count -eq 0 } | Remove-Item -Recurse -Force

解释:

  • Get-ChildItem -Path "C:\path\to\root\directory" -Recurse -Directory:递归获取根目录下的所有子目录。
  • Where-Object { $_.GetFiles().Count -eq 0 }:筛选出空目录。
  • Remove-Item -Recurse -Force:删除这些空目录。

注意事项:

  1. 备份数据:在执行删除操作之前,请确保已经备份了重要数据,以防止误删。
  2. 权限:确保你有足够的权限来删除目录。
  3. 测试:在实际环境中执行之前,建议在一个小的测试环境中先进行测试。

应用场景:

  • 清理项目目录中的空目录,保持文件系统的整洁。
  • 定期维护服务器上的目录结构,删除不再需要的空目录。

参考链接:

通过以上方法,你可以有效地删除所有空目录,同时保留根目录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python强制删除文件夹_python删除文件夹下的文件保留清空子文件夹

import os import shutil # 删除文件夹下的文件&&保留清空子文件夹 def del_file(filepath): print(“hello”) listdir = os.listdir...dirname = filepath + “//” + dirname if os.path.isfile(dirname): # 是文件 print(dirname) os.remove(dirname) # 删除文件...elif os.path.isdir(dirname): # 是子文件夹 print(dirname) del_file(dirname) # 递归删除 # 把上一行去掉,下面的写法是删除第二级子目录中所有文件及文件夹...for f in dellist: # 遍历该子文件夹 # file_path = os.path.join(dirname, f) # if os.path.isfile(file_path): # 删除子文件夹下文件...# os.remove(file_path) # elif os.path.isdir(file_path): # 强制删除子文件夹下的子文件夹 # shutil.rmtree(file_path)

4.4K10
  • mysql下批量清空某个库下的所有表(库不要删除保留空库)

    总所周知,mysql下要想删除某个库下的某张表,只需要切换到该库下,执行语句"drop table tablename"即可删除!...若是该库下有成百上千张表,要是再这样一次次执行drop语句,就太费劲了!...正确的批量删除某个库下的所有表的方法只需如下两步: 1)第一步(只需将下面的"库名"替换成实际操作中的库名即可) select concat('drop table ',table_name,';')...from information_schema.TABLES where table_schema='库名'; 2)第二步 切换到这个库下,把第一步的执行结果导出,然后全部执行 例如: 批量删除kevin...库下的所有表 mysql> select concat('drop table ',table_name,';') from information_schema.TABLES where table_schema

    2.5K40

    【Linux入门】路径的概念及目录的操作

    在Linux操作系统中,则是以 目录树 的形式展现,所有的文件及目录都是从 根目录/ 开始的,如/home,/etc 等,即便是有多块硬盘挂载或有不同的分区,也要从 根目录/ 开始。...相对路径与绝对路径 绝对路径:路径的写法“一定是由根目录/开始”,写法比较麻烦,正确率高且出错易于排查。如:/home/test/。...rmdir rmdir 是 remove directory 命令的缩写,值得注意的是,rmdir 只能删除空目录,即被删除的目录中不能包含文件或子目录。...命令格式: rmdir [-p] 目录名称 # -p 按层级的将空目录一并删除 命令示例: # 在当前工作目录下,删除空目录 test rmdir test # 在当前工作目录下,连续删除多层级空目录...,将3个空目录同时删除 rmdir -p test_a/test_b/test_c # 以绝对路径方式删除空目录 rmdir /home/www/test_dir 我正在参与2023腾讯技术创作特训营第四期有奖征文

    45031

    Linux学习笔记(四)目录操作

    一、创建和删除目录 1. mkdir命令 使用命令mkdir 目录名可以在当前目录再创建一个指定目录名; (1)同时创建多个目录 mkdir a b c 同时创建a、b、c三个目录 ?...使用命令: mkdir -p a/b/c 创建多级目录,效率会高很多; 2. rmdir命令 rmdir删除目录(只能删除空目录) rm -r 目录删除空目录 rm -r -f 目录无提示删除空目录可以合并为...所以这里面这个sudo rm -rf /意思是:无提示信息以管理员身份从根目录执行删除命令?...cp -v 源文件 目标目录 参数-v能显示复制的过程; cp -p复制时保留原有的时间; cp -a复制时保留原有的权限、属组、时间 2. mv命令 mv文件和文件夹的移动功能、重命名功能 (1)将原文件名改为新文件名...(3)将文件移动的同时重命名 我们可以使用命令mv 文件夹中的文件 目标目录及新文件名 mv /tmp/filea /fileb 将tmp文件夹下的文件filea移动到根目录下,并重命名为fileb

    1.9K40

    【linux命令讲解大全】035.文件删除命令:rm 和 rmdir 的用法详解

    rm 用于删除给定的文件和目录 补充说明 rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。...rm -I file1 file2 file3 删除根目录 当然,删除根目录(/)是 Linux 用户最不想要的操作,这也就是为什么默认rm命令不支持在根目录上执行递归删除操作。...不给实例了,操作系统都被你删除了,你太坏了 rm显示当前删除操作的详情 rm -v [文件/目录] rmdir 用来删除空目录 补充说明 rmdir命令用来删除空目录。...删除目录时,必须具有对其父目录的写权限。 注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部删除。...参数 目录列表:要删除空目录列表。当删除多个空目录时,目录名之间使用空格隔开。

    66110

    二.Linux文件及目录管理

    /:根目录,linux文件系统的最顶端和入口 bin:存放用户二进制文件(如:ls,cd,mv等),实则/user/bin的硬链接(相当于Windows系统的快捷方式) boot:启动linux时使用的核心文件...危险 -i 删除前会进行询问操作 -r 递归删除 危险 3.5 mkdir(创建空目录) 注意: 当使用-p选项时,前面的父目录已经存在,系统也不会显示错误信息。...注意使用-p一定检查目录拼写是否正确,否则创建的目录会乱七八糟。 当创建空目录时没有用-m指定权限时,新建目录的默认权限与umask有关。 ?...3.6 rmdir(删除空目录) ?...声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/linux%e6%96%87%e4%bb%b6%e5%8f%8a%e7%9b%ae%e5%bd

    1.6K41

    玩转linux只需要几个命令

    如果你觉得这个还不能满足你的要求你也可以 ls --help mkdir mkdir 建立目录 mkdir test mkdir -p test/val 建立多级目录 -m 加上文件权限 rmdir rmdir  删除空目录...如:rmdir test(只能删除空目录,如果该目录下还有其它文件则该命令无效) touch touch 建立空文件 如:touch Test.txt cp cp 复制命令 如:cp /home/Test.txt...Test.txt文件移动到根目录下) mv /Test.txt /Hello.java(表示将Test.txt文件名改成Hello.java) rm rm 删除文件和目录 如:rm /Test.txt...(将根目录下的Test.txt删除) (注:如果该文件是个文件夹则删除不了) rm -rf *(-r表示递归、f表示强制删除)删除所有内容,包括目录和文件夹 如:rm -rf /home/test(强制删除...useradd leo passwd 用户名 给指定的用户名修改密码 如:passwd leo userdel 用户名 删除一个用户,但是该用户在home文件下的子文件夹会保留 如:userdel leo

    1.2K90

    【操作系统 | Linux】 文件管理四件套(切换,创建删除,复制移动)

    推荐一款找工作神器网站: 点击跳转牛客网 |笔试题库|面试经验|实习招聘内推| 文章目录 一、切换工作目录 1.1 返回目录 二、创建与删除目录 2.1 创建 2.2 删除 三、复制和移动目录 3.1...change directory) # man cd 由于这是内置命令,所以会展示的是内置 bash 的用法 对内置命令查看 help cd 1.1 返回目录 # cd - 二、创建与删除目录...2.1 创建 # man mkdir 如果想一次性创建多层级目录,可以使用-p参数 # mkdir -p /a/b/v 2.2 删除 # rmdir 注意,该方法只适合删除空目录...# rm 在使用 rm 时一定要万分小心, 仔细检查参数,例如: 这里/a 多了个空格就会删除根目录所有文件!...,一定要小心 三、复制和移动目录 3.1 复制 # cp [文件] [目标文件] cp 只能复制文件 如果需要复制目录,则需要 添加-r参数 -v 添加信息提示 -p保留修改时间 -a保留所有信息

    69130

    Linux中的绝对路径和相对路径

    在Linux中,存在着绝对路径和相对路径 绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql 相对路径:路径的写法不是由根目录 / 写起的,例如 首先用户进入到 /home...Workstation 12 Linux系统 CentOS 7.3 二、命令 cd 命令cd (change directory)是用来变更用户所在目录的,如果后面什么都不跟,就会直接进入当前用户的根目录下...四、命令 rmdir 命令rmdir(remove directory)用于删除空目录,后面可以是一个目录,也可以是多个目录(用空格分隔)。 注:该命令只能删除目录,不能删除文件。 ?...从上例中我们可以看出命令rmdir只能删除空目录,即使加上-p选项也只能删除一串空目录。 五、命令 rm 命令rm最常用的两个选项 1,-r:删除目录用的选项,类似于rmdir,但可以删除空目录。...2,-f:表示强制删除。 ? 上例中,/tmp/test/123/123这个目录是不存在的,加上-f选项后,就不会报错。如果要删除一个存在的目录时,即使加上-f选项也会报错。

    6.2K50

    kali的命令基础

    2.ls ls列出文件和目录ls/home(列出home下面的所有文件和目录) ls-alh 列出当前所有文件包括隐藏文件及文件大小权限和时间,我一般都这么使用,它的使用太频繁了。...mkdir-ptest/val 建立多级目录-m加上文件权限 rmdir rmdir 删除空目录如:rmdirtest(只能删除空目录,如果该目录下还有其它文件则该命令无效) 4.touch touch...Hello.java) 7.rm rm删除文件和目录如:rm/Test.txt(将根目录下的Test.txt删除) (注:如果该文件是个文件夹则删除不了)rm-rf*(-r表示递归、f表示强制删除)删除所有内容...(/)表示根目录pwd显示用户当前在哪个路径下的命令(这个命令用的特别多,在命令行里如果不知道当前所处文件夹,可以输入该命令pwd) 18.用于创建,删除用户 useradd用户名添加一个用户如:useradd...leo passwd用户名给指定的用户名修改密码如:passwd leo userdel用户名删除一个用户,但是该用户在home文件下的子文件夹会保留如:userdelleo userdel-r用户名删除一个用户

    4.1K40

    CMD批处理——forfiles命令使用,自动删除过期备份文件

    因为只要保留最近几天的备份,如果可以做一个批处理让系统自动删除老备份文件就好了,但是Windows的命令行和Linux的Shell比起来功能差了很多,到底行不行我自己也不清楚。...删除所有空目录(以删除d:\test目录下为例) dir /ad/b/s d:\test\ |sort /r >d:\kill.txt For /f "tokens=*" %%i in (d:\...sort /r >d:\kill.txt For /f "tokens=*" %%i in (d:\kill.txt) DO rd "%%i" del d:\kill.txt 先删过期文件,再删所有空目录...例1.要把在C盘根目录下最后修改日期大于或等于2007年7月1日的文件复制到D盘根目录下: forfiles /p "c:\" /d "2007-7-1" /c "cmd /c copy @path d...如果操作系统是 Windows 2000/XP 就比较麻烦,因为它们没有forfiles命令,只能靠自己写批处理来实现了。

    4.2K10

    Windows 命令行快速上手

    md DIR_NAME :: 相对于根目录创建目录树。 ```shell md \Taxes\Property\Current del / erase 删除一个或多个文件。.../f 强制删除只读文件。 /s 从当前目录和所有子目录中删除指定文件。 显示正在删除的文件的名称。 /q 安静模式。系统不会提示您确认删除。...q 删除空目录时不提醒。.../q 只有在使用 /s 选项时才有效 示例: :: 删除目录 rd DIR :: 删除空目录,会有交互式提醒是否删除 rd /s DIR :: 删除空目录时不提醒 rd /s /q DIR move.../k:复制文件并保留目标文件的只读属性(如果源文件中存在)。 默认情况下,xcopy 删除只读属性。 /l:生成要复制的文件列表,但不主动复制文件。 /q:不显示复制的文件和目录名。

    34520

    Linux命令2-实用指令和文件管理

    # 切换到上一级目录 cd - # 切换到上次的目录 如何理解绝对路径和相对路径 比如目前在/root目录下,想切换到/home目录下: 绝对路径:/home,表示从根目录/开始切换 相对路径:...(当前目录) 及 “…” (父目录) -S 根据文件大小排序 -R 递归列出所有子目录 ? ? ?...ls -a # 显示所有文件,包含隐藏文件 ls -l # 列出文件的详细信息,长格式显示 ls / # 显示根目录/下的全部文件、目录 ls /Users/peter/Desktop...写和执行权限,其他人无权访问 语法格式 : mkdir [参数] [目录] 常用参数: -p 递归创建多级目录 -m 建立目录的同时设置目录的权限 -z 设置安全上下文 -v 显示目录的创建过程 rmdir-删除空目录...rmdir删除指定的空目录,基本语法: rmdir [选项] [待删除空目录] 如果不是空目录,则无法删除删除空目录,使用rm -rf 表示强制性删除 rm -rf /home/dog # 删除空目录

    91530

    SDK热更之gradle插件(如何在SDK代码中自动插桩及如何生成补丁包)

    SDK热更中保存SDK的版本、热更测试函数的核心类,这个类在生成补丁包时一定会保留 String patchPileClass SDK插桩使用的类的类名,这个类在生成SDK或者补丁的时候一定会被删除...自动构建时完成对所有需要插桩类的默认构造函数插桩 自动构建完成对所有需要插桩的类插桩后删除插桩类com.bihe0832.hotfix.Fix 自动构建的过程中计算生成所有该版本对应每个class...文件的md5,例如3_hash.txt 对应代码 自动构建相关代码(具体代码参考根目录build.sh): cd $localPath/MD5 && ....,逐个文件与历史版本中的文件对比md5,如果一致则删除,不一致则保留 所有文件对比完成以后,清除空目录,将剩余文件打包为jar,并转为dex 由于补丁信息类com.bihe0832.hotfix.FixInfo...中保存了SDK的补丁的版本号等信息,因此该文件一定保留不会删除 对应代码 自动构建相关代码(具体代码参考根目录build.sh): cd $localPath/MD5 && .

    91890

    Linux命令(23)——rm和rmdir命令

    不指定WHEN,默认为always; --one-file-system:在递归地删除层次结构时,跳过与相应命令行参数不同的文件系统上的任何目录; --no-preserve-root:对根目录不做特殊对待...; --preserve-root:不对根目录进行递归操作,为默认选项; -r,-R,--recursive:递归处理,将指定目录下的所有文件与子目录一并处理; -v,--verbose:显示指令的详细执行过程...1.4常用示例 (1)删除目录zd。 rm –r zd (2)删除当前目录下的所有文件及目录。 rm -r * 2.rmdir命令 2.1简介 rmdir命令用来删除空的目录。...当目录不再被使用时,或者磁盘空间已达上限,就需要删除失去使用价值的目录。利用rmdir命令可以删除一个或多个空目录。 2.2命令格式 rmdir [OPTION]......DIRECTORY... 2.3选项说明 --ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除空目录时导致的错误信息; -p,--parents:删除指定目录后,若该目录的上层目录已变成空目录

    2.4K10
    领券