Linux编程之删除文件时排除某个文件

简介: Linux编程之删除文件时排除某个文件

导读

有时候我们在Linux下删除某个文件夹内的所有文件时需要排除一些文件。

例如如下真是用户案例:

  • 用户在嵌入式设备中恢复默认设置的时候,不让某些比较配置繁琐的配置恢复(即保留某些文件);

实验

例如我们有test/a.txt b.txt c.txt d.txt e.txttest/config/setting.ini这些配置文件,都有不同的作用。

假设我们需要保留test/c.txttest/config/setting.ini这两个配置文件中的配置信息。

1、创建实验的文件

[root@TrueDei test]# touch a.txt b.txt c.txt d.txt e.txt
[root@TrueDei test]# 
[root@TrueDei test]# ls
a.txt  b.txt  c.txt  d.txt  e.txt
[root@TrueDei test]#

2、执行测试命令

我们可以分步骤进行

  • 1、先查询出来排出后的所有文件
  • 2、按照查询的结果进行删除

直接通过ls或者find命令可以查看某个目录中的所有文件,我们发现

[root@TrueDei test]# ls ./*
./a.txt  ./b.txt  ./c.txt  ./d.txt  ./e.txt
[root@TrueDei test]# 
[root@TrueDei test]# find ./*
./a.txt
./b.txt
./c.txt
./d.txt
./e.txt
[root@TrueDei test]#

创建一个二级目录再尝试查看一下。

也是可以查询所有的文件的

[root@TrueDei test]# mkdir config
[root@TrueDei test]# touch config/setting.ini
[root@TrueDei test]# 
[root@TrueDei test]# find ./*                
./a.txt
./b.txt
./config
./config/setting.ini
./c.txt
./d.txt
./e.txt
[root@TrueDei test]# 
[root@TrueDei test]# ls ./*                  
./a.txt  ./b.txt  ./c.txt  ./d.txt  ./e.txt
./config:
setting.ini
[root@TrueDei test]#

查询并排除我们想排除的文件

grep命令,应该很常用,可以过滤出来我们想要的数据。

如果需要排除我们不想要的数据的话,Linux也提供了一个egrep命令;

# 查看所有的文件
[root@TrueDei test]# ls ./*
./a.txt  ./b.txt  ./c.txt  ./d.txt  ./e.txt
./config:
setting.ini
[root@TrueDei test]# 
# 排除setting.ini文件
[root@TrueDei test]# ls ./* |egrep -v  '(setting.ini)'
./a.txt
./b.txt
./c.txt
./d.txt
./e.txt
./config:
[root@TrueDei test]# 
[root@TrueDei test]# 
# 排除c.txt和setting.ini文件
[root@TrueDei test]# ls ./* |egrep -v  '(c.txt|setting.ini)'
./a.txt
./b.txt
./d.txt
./e.txt
./config:
[root@TrueDei test]# 
[root@TrueDei test]#

配合rm命令进行删除

# 我们直接使用rm命令是有时候还询问是否删除等信息。在代码中就不好操作了。很烦人的
[root@TrueDei test]# rm `ls ./* |egrep -v  '(c.txt|setting.ini)'`
rm: remove regular empty file './a.txt'? y
rm: remove regular empty file './b.txt'? ^C
# 我们加上-rf即可
[root@TrueDei test]# rm `ls ./* |egrep -v  '(c.txt|setting.ini)'` -rf
[root@TrueDei test]#

可以看到成功了。只保留了c.txt和setting.ini

[root@TrueDei test]# ls ./*
./c.txt
./config:
setting.ini
[root@TrueDei test]#

C语言Linux编程实现

通过C语言提供的system函数可以使用shell命令进行操作。

system("rm `ls /root/test/* |egrep -v  '(c.txt|setting.ini)'` -rf; /sbin/reboot -f");
目录
相关文章
|
4月前
|
存储 数据管理 Linux
区分Linux中.tar文件与.tar.gz文件的不同。
总之,".tar"文件提供了一种方便的文件整理方式,其归档但不压缩的特点适用于快速打包和解压,而".tar.gz"文件通过额外的压缩步骤,尽管处理时间更长,但可以减小文件尺寸,更适合于需要节约存储空间或进行文件传输的场景。用户在选择时应根据具体需求,考虑两种格式各自的优劣。
713 13
|
5月前
|
安全 Linux
Linux赋予文件000权限的恢复技巧
以上这些步骤就像是打开一扇锁住的门,步骤看似简单,但是背后却有着严格的逻辑和规则。切记,在任何时候,变更文件权限都要考虑安全性,不要无谓地放宽权限,那样可能
189 16
|
6月前
|
Linux
【Linux】 Linux文件I/O常见操作技巧
以上就是Linux文件I/O操作的一些技巧,接纳它们,让它们成为你在Linux世界中的得力伙伴,工作会变得轻松许多。不过记住,技巧的运用也需要根据实际情况灵活掌握,毕竟,最适合的才是最好的。
211 28
|
5月前
|
存储 Linux 数据处理
深入剖析Linux中一切即文件的哲学和重定向的机制
在计算机的奇妙世界中,Linux的这套哲学和机制减少了不同类型资源的处理方式,简化了抽象的概念,并蕴藏着强大的灵活性。就像变戏法一样,轻轻松松地在文件、程序与设备之间转换数据流,标准输入、输出、错误流就在指尖舞动,程序的交互和数据处理因此变得既高效又富有乐趣。
104 4
|
6月前
|
安全 算法 Ubuntu
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
304 13
|
6月前
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
895 12
|
5月前
|
Linux
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename 's/2023/2024/' *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
2月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
403 1
二、Linux文本处理与文件操作核心命令
|
2月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
288 137
|
2月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
658 57