如何在Linux中删除非空目录

时间:2020-01-09 10:39:36  来源:igfitidea点击:

我正在尝试使用rmdir命令删除Linux中的目录。
但是,我收到一条错误消息,内容如下:

rmdir: failed to remove 'trip-pictures': Directory not empty

如何使用cli在Linux中删除非空目录?
在Linux操作系统中,有两个命令可以用来删除非空目录:

  • rmdir命令仅在目录为空时删除目录
  • rm命令删除目录和所有文件,即使它不是空的

在Linux中删除非空目录的过程

语法为:

rm -rf dir-name
rm -rf /path/to/dir/name

将rm命令与-r和-f选项一起使用时,请小心。

-r选项以递归方式删除目录及其内容,包括所有文件。

rm命令的-f选项将忽略不存在的文件和参数,从不提示输入任何内容。
没有撤消选项。
因此,使用rm -rf命令必须非常小心。
让我们看一些例子。

例子

尝试使用rmdir命令删除trip-pictures目录:

rmdir trip-pictures

输出示例:

rmdir: failed to remove 'trip-picture/': Directory not empty

要查看目录中的文件,请使用ls命令

ls -l trip-pictures
ls trip-pictures

要删除旅行图片中的所有文件(包括文件夹本身),请运行以下rm命令:

rm -rf trip-pictures

如何获得有关删除目录的过程信息

将-v传递给rm命令:

rm -vrf dir1
rm -vrf dir1 dir2

输出示例:

removed 'dir1/resume.txt'
removed 'dir1/bar.txt'
removed 'dir1/foo.txt'
removed directory 'dir1'
removed directory 'dir2/pictures'
removed directory 'dir2'

如何在每次删除目录之前获取确认提示

您需要将-i选项传递给rm命令:

rm -ir foo

输出示例:

rm: descend into directory 'foo/'? y
rm: remove regular empty file 'foo/bash.tar.gz'? y
rm: remove regular empty file 'foo/db.sql'? y
rm: remove directory 'foo/'? y

在删除三个以上文件之前或在递归删除时获得一次提示;比-i更具侵入性,同时仍然可以防止大多数错误,请通过-I选项:

rm -Ir bar

输出示例:

rm: remove 1 argument recursively? y