删除计算机文件的几种方法,3种方式删除目录中的所有文件,除了一个或少量带扩展名的文件...

有时,你会遇到一种情况,你需要删除目录中的所有文件或只是清除目录,删除所有文件,除了给定类型的文件(以特定的扩展名结束)。

在本文中,我们将告诉你如何在目录中删除文件,除了某些文件扩展名或使用RM类型, 找到并GLOBIGNORE命令。

在我们进一步移动之前,让我们从简单地看一看Linux中的一个重要概念 - 文件名模式匹配,这将使我们能够处理我们的问题。

通配符或元字符的字符串:

* -零个或多个字符匹配

? -匹配任何单个字符

[seq] -序列中的任何字符相匹配

[!seq] -匹配任何字符不是以次

我们将在这里探讨三种可能的方法,包括:

使用扩展模式匹配操作符删除文件

的不同的扩展的模式匹配运算符如下,其中图案列表是包含一个或多个文件名的列表中列出,使用分离|字符:

*(pattern-list) -零个或多个指定的模式相匹配

?(pattern-list) -匹配零次或一次指定模式

+(模式列表) -匹配指定模式的一次或多次出现

@(pattern-list) -匹配指定的模式之一

!(pattern-list) -匹配任何东西,除了给定的模式之一

要使用它们,如下启用extglob shell选项:

# shopt -s extglob

1.要删除所有文件,除了文件名的目录中,键入以下命令:

$ rm -v !("filename")

efb079f828166914af1a62bd3b33018e.png

在Linux中删除除一个文件之外的所有文件

2.要删除与文件名1和文件名2以外的所有文件:

$ rm -v !("filename1"|"filename2")

755e03f287cf8ac51a7b1b1c48a8d8e6.png

除了Linux中的少量文件之外,删除所有文件

3.下面的例子说明如何删除比所有其他所有文件.zip交互文件:

$ rm -i !(*.zip)

fcecf4b6d34e5dc0b939837a84107ac7.png

删除除Linux中的Zip文件之外的所有文件

4.接下来,你可以在一个目录中的所有删除所有文件除了.zip和.odt文件如下,同时显示正在做什么:

$ rm -v !(*.zip|*.odt)

35d36ad56af900a7a26631e3647448e9.png

删除除某些文件扩展名之外的所有文件

一旦你拥有所有必需的命令,关闭,像这样的extglob外壳选项:

$ shopt -u extglob

使用Linux find命令删除文件

根据这种方法,我们可以使用find命令只用适当的选项,或者与通过采用流水线如下形式xargs的命令结合:

$ find /directory/ -type f -not -name 'PATTERN' -delete

$ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm {}

$ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm [options] {}

5.以下命令将从除了删除所有文件.gz在当前目录下的文件:

$ find . -type f -not -name '*.gz'-delete

442ec466a972973fd1caa9939ffc7175.png

命令查找 - 删除除了.gz文件之外的所有文件

6.使用管道和xargs的 ,您对上述修改如下情况:

$ find . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}

dde5f63e48d86c11ce5a6aec0b7af82d.png

使用find和xargs命令删除文件

7.让我们看一个额外的例子,下面的命令将消灭排除所有文件.gz , .odt和.jpg在当前目录下的文件:

$ find . -type f -not \(-name '*gz' -or -name '*odt' -or -name '*.jpg' \) -delete

4de4e0daa01eadfbdf381fc2add637d4.png

除文件扩展名外,删除所有文件

使用Bash GLOBIGNORE变量删除文件

然而,最后一种方法,只适用于bash。在这里,GLOBIGNORE变量存储一个冒号分隔的模式列表(文件名)由路径扩展被忽略。

GLOBIGNORE变量,如下所示:

$ cd test

$ GLOBIGNORE=*.odt:*.iso:*.txt

在这种情况下,比其他所有的文件.odt , .iso和.txt文件与从当前目录中删除。

现在运行命令清理目录:

$ rm -v *

此后,关闭GLOBIGNORE变量:

$ unset GLOBIGNORE

0841c61e321e2783cc4d1cc54a1632d1.png

使用Bash GLOBIGNORE变量删除文件

注意 :要了解上面的命令所使用的标志的含义,请参见我们在各种插图中使用的每个命令的手册页。

就这样!如果您有任何其他命令行技术为同一目的,不要忘记通过我们的反馈部分与我们分享以下。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: rmdir -p homework/work1 和 rm -rf homework/work1 是 Linux 的两条命令,主要用于删除文件夹。 rmdir -p 指令是用来递归删除文件夹的,也就是说如果要删除文件夹不为空,rmdir -p 就会删除文件夹下的所有文件夹和文件,直到该文件夹为空为止。例如,如果要删除 homework/work1 这个文件夹,rmdir -p 会先删除 homework/work1 的所有文件文件夹,最后再删除 homework/work1 这个文件夹。 rm -rf 指令是用来强制删除文件夹的,它不会询问用户确认,而是直接删除文件夹下的所有文件文件夹,包括该文件夹本身。例如,如果要删除 homework/work1 这个文件夹,rm -rf 就会直接删除文件夹以及该文件夹下的所有文件文件夹,不会给出任何提示或确认。 综上所述,rmdir -p 和 rm -rf 都是用于删除文件夹的命令,但 rmdir -p 是递归删除文件夹,rm -rf 是强制删除文件夹。因此,使用时应该根据需求选择相应的命令。 ### 回答2: 这两条指令分别是rmdir -p homework/work1和rm -rf homework/work1。 首先,它们的相同之处是它们都是用来删除指定目录下的文件文件夹。在这里,它们都是针对homework目录下的work1文件夹进行删除操作。 然而,它们也存在一些异同之处。 异同之一是它们的操作方式不同。rmdir -p是将homework文件夹下的work1文件夹进行删除,如果work1文件还存在其他文件文件夹,则会报错,无法删除。而rm -rf则是强制递归删除homework文件夹下的work1文件夹,无论其是否还存在其他文件文件夹,都会被删除。 另一个异同之处在于对于符号链接的处理。rmdir -p在遇到符号链接时不会删除它们,而rm -rf则会删除符号链接指向的原始文件文件夹。 此外,使用这两条指令时也需要注意的是,rmdir -p要求在删除过程要从上至下一级一级删除,如果间某一级出现问题,则无法继续删除。而rm -rf则会直接删除整个指定的文件夹,无论其是否包含内容。 总结起来,两条指令都是删除指定目录下的文件文件夹,但是rmdir -p相对安全,不会删除包含其他文件文件夹的目录,而rm -rf则是强制删除整个指定的目录,包括其的所有内容。 ### 回答3: 这两条指令分别是 rmdir -p homework/work1 和 rm -rf homework/work1。 异同点如下: 1. 功能:rmdir -p homework/work1 用于删除指定的文件夹以及其父文件夹,而 rm -rf homework/work1 用于递归地删除指定文件夹及其内部的所有文件和子文件夹。 2. 安全性:rmdir -p 指令相对来说更加安全,因为它只会删除指定的文件夹以及其父文件夹,且只在被删除目录为空时生效。而 rm -rf 指令则会递归地删除整个指定文件夹内的所有内容,并且不进行任何确认操作,因此需要谨慎使用,以免误删重要文件。 3. 使用范围:rmdir -p 只能用于删除文件夹,而不能用于删除文件。rm -rf 则既可用于删除文件夹,也可用于删除文件,执行范围更广。 4. 删除效果:rmdir -p 在删除过程会逐级删除文件夹,如果有子文件夹或文件无法删除,则整个删除操作会止。rm -rf 则会忽略删除的错误,继续删除其他文件文件夹。 5. 提示信息:rmdir -p 删除文件夹时会提示用户确认删除,而 rm -rf 删除文件夹和文件时不会给出任何提示信息。 总结来说,rmdir -p 用于相对安全地逐级删除文件夹及其父文件夹,而 rm -rf 则用于递归地删除整个文件夹及其内容,操作风险更大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值