前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell编程中对以`-`开头文件的三种删除方法

Shell编程中对以`-`开头文件的三种删除方法

原创
作者头像
哎呀_编号89757
发布2024-11-12 14:08:53
850
发布2024-11-12 14:08:53
举报
文章被收录于专栏:Shell编程读书笔记

文章开始之前,推荐社区内一篇对于大数据方面很好的一篇文章,如果感兴趣,可以点击链接去看下 文章标题:《Redis 实现高效任务队列:异步队列与延迟队列详解》 文章链接:https://cloud.tencent.com/developer/article/2465083 这篇文章介绍了redis的异步队列和延迟队列的基础知识点,能够让初学者有一个总体的脉络。

接下来开始正文!

偶然情况下,不小心在系统内操作新增了一个形似--xxxx的文件,如下:

按照常规的删除方式,rm -rf --xxxx,始终无法删除,并且报错:

相信对于很多新进的linux的学习者会遇到诸如此类的问题,本文将会通过三种不同的方式对其进行删除

1 直接只用rm方式

这种方法是三种方法中最简单的,但是在各种教材中我没有看到过的,如下:

代码语言:shell
复制
rm -- -xxxx

该方式针对以-开头的文件均可以正常删除,具体如下:

代码语言:shell
复制
[songj@instance-jgzzg4xl ~]$ rm -- --no-recursion
[songj@instance-jgzzg4xl ~]$ ll
total 44
-rw-r--r-- 1 songj developer 10240 Nov  7 15:22 data.tar.gz
-rw-r--r-- 1 songj developer   100 Nov 12 13:06 delete_abnormal_file.sh
drwxr-xr-x 2 songj developer  4096 Nov 12 13:06 file_dust
drwxr-xr-x 2 songj developer  4096 Nov  6 17:07 file_folder
-rw-r--r-- 1 songj developer    99 Nov 12 11:35 mv_abnormal_to_dustbin.sh
-rw-r--r-- 1 songj developer    34 Nov  6 16:14 my_firstfile.sh
-rw-r--r-- 1 songj developer  4768 Nov 12 10:58 my_testdata.txt
-rw-r--r-- 1 songj developer   237 Nov  7 15:25 new_data.tar.gz
2 通过find函数查找inode,调用rm进行删除

该方式的原理是通过找到文件的inode,利用该inode进行删除

首先手工找到-开头的文件的inode:

代码语言:shell
复制
ll -i path

结果:

代码语言:shell
复制
[songj@instance-jgzzg4xl ~]$ ll -i
total 12
786466 drwxr-xr-x 2 songj developer 4096 Nov 12 13:06 file_dust
786465 drwxr-xr-x 2 songj developer 4096 Nov 12 13:24 file_folder
786435 -rw-r--r-- 1 songj developer    4 Nov 12 13:25 --no-recursion

可知我们要删除的文件的inode为786435,然后使用find函数找到该文件,并调用rm函数

代码语言:shell
复制
[songj@instance-jgzzg4xl ~]$ find . -inum 786435 -exec rm {} \;
[songj@instance-jgzzg4xl ~]$ ll
total 8
drwxr-xr-x 2 songj developer 4096 Nov 12 13:06 file_dust
drwxr-xr-x 2 songj developer 4096 Nov 12 13:24 file_folder

我们发现同样可以达到删除的目的。

3 使用函数进行删除

这种方法看似麻烦,但是却能够批量操作,通用性最高。

代码语言:shell
复制
#!/bin/bash
#!/bin/bash
for i in /home/songj/*
do
if [[ $i == *-* ]]
then
echo "file $i 将被删除."
rm -rf $i
fi
done

运行脚本

代码语言:shell
复制
[songj@instance-jgzzg4xl ~]$ sh delete_abnormal_file.sh 
file /home/songj/--no-recursion 将被删除.

发现以-开头的文件被成功删除。

4 结论

随着不断学习,可能删除-开头文件会有不同的方式,知识总让人越来越灵活。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 直接只用rm方式
  • 2 通过find函数查找inode,调用rm进行删除
  • 3 使用函数进行删除
  • 4 结论
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档