linux删除了家目录,linux – Unix命令删除了每个目录,即使没有指定

ls -l命令给出了当前present-working-directory(PWD)中所有子目录的列表.

rm命令可以删除多个文件/目录,如果您将它们作为列表传递给它.

例如:rm test1.txt test2.txt myApp将删除所有三个名称为的文件:

test1.txt

test2.txt

myApp

此外,您使用的rm命令的标志在许多愚蠢行为中很常见.

rm -f – 强制删除文件而不询问或确认

rm -r – 递归到所有子目录并删除其所有内容和子目录

所以,假设您在/ home / user中,目录结构如下所示:

/home/user

|->dir1

|->dir2

`->file1.txt

ls -l命令将提供包含“dir1 dir2 file1.txt”的列表,以及命令ls -l |的结果. xargs rm -rf将如下所示:

rm -rf dir1 dir2 file1.txt

如果我们使用上面的示例扩展您的原始问题,那么传递给系统的最终命令将变为:

rm -rf di1 dir2 file1.txt bark.*

因此,当前目录中的所有内容都会被删除,因此bark.*是多余的(您有效地告诉机器无论如何都要销毁当前目录中的所有内容).

我想你要做的是删除当前目录中的所有文件以及以bark开头的所有子目录(recurse).要做到这一点,你只需要这样做:

找到-iname bark.* | xargs rm

上面的命令意味着“查找此目录和子目录中的所有文件,忽略大写/小写/ mIxEdCaSe,以字符”bark.“开头,并删除它们”.如果您有拼写错误,这仍然可能是一个错误的命令,所以可以肯定的是,您应该在执行批量删除之前进行测试.

将来,首先要执行以下操作以获取您将首先删除的所有文件的列表,以确认它们是您要删除的文件.

找到-iname bark.* | xargs回声

然后,如果您确定,请通过删除它们

找到-iname bark.* | xargs rm

希望这可以帮助.

自动脚本运行类似rm -rf /usr/local / ………,但由于意外插入空格,命令变为rm -rf /usr/local / ……,所以这实际上意味着“删除所有以usr或local开头的根文件夹”,有效地破坏了使用它的任何人的系统.我觉得这个开发人员不好.

您可以通过引用字符串来避免这些类型的错误,即:

rm -rf“/usr/local / ….”会提供错误消息并避免此错误,因为引号意味着它们之间的所有内容都是完整路径,而不是单独路径/文件的列表(即:您告诉rm文件/文件夹的名称中有一个SPACE字符).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值