文章开始之前,推荐社区内一篇对于大数据方面很好的一篇文章,如果感兴趣,可以点击链接去看下 文章标题:《Redis 实现高效任务队列:异步队列与延迟队列详解》 文章链接:https://cloud.tencent.com/developer/article/2465083 这篇文章介绍了redis的异步队列和延迟队列的基础知识点,能够让初学者有一个总体的脉络。
接下来开始正文!
偶然情况下,不小心在系统内操作新增了一个形似--xxxx
的文件,如下:
按照常规的删除方式,rm -rf --xxxx
,始终无法删除,并且报错:
相信对于很多新进的linux的学习者会遇到诸如此类的问题,本文将会通过三种不同的方式对其进行删除
rm
方式这种方法是三种方法中最简单的,但是在各种教材中我没有看到过的,如下:
rm -- -xxxx
该方式针对以-
开头的文件均可以正常删除,具体如下:
[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
find
函数查找inode
,调用rm
进行删除该方式的原理是通过找到文件的inode,利用该inode进行删除
首先手工找到-
开头的文件的inode:
ll -i path
结果:
[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函数
[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
我们发现同样可以达到删除的目的。
这种方法看似麻烦,但是却能够批量操作,通用性最高。
#!/bin/bash
#!/bin/bash
for i in /home/songj/*
do
if [[ $i == *-* ]]
then
echo "file $i 将被删除."
rm -rf $i
fi
done
运行脚本
[songj@instance-jgzzg4xl ~]$ sh delete_abnormal_file.sh
file /home/songj/--no-recursion 将被删除.
发现以-
开头的文件被成功删除。
随着不断学习,可能删除-
开头文件会有不同的方式,知识总让人越来越灵活。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。