导读
有时候我们在Linux下删除某个文件夹内的所有文件时需要排除一些文件。
例如如下真是用户案例:
- 用户在嵌入式设备中恢复默认设置的时候,不让某些比较配置繁琐的配置恢复(即保留某些文件);
实验
例如我们有test/a.txt b.txt c.txt d.txt e.txt 和 test/config/setting.ini 这些配置文件,都有不同的作用。
假设我们需要保留test/c.txt 和test/config/setting.ini 这两个配置文件中的配置信息。
1、创建实验的文件
[root@TrueDei test]
[root@TrueDei test]
[root@TrueDei test]
a.txt b.txt c.txt d.txt e.txt
[root@TrueDei test]
2、执行测试命令 我们可以分步骤进行
- 1、先查询出来排出后的所有文件
- 2、按照查询的结果进行删除
直接通过ls 或者find 命令可以查看某个目录中的所有文件,我们发现
[root@TrueDei test]
./a.txt ./b.txt ./c.txt ./d.txt ./e.txt
[root@TrueDei test]
[root@TrueDei test]
./a.txt
./b.txt
./c.txt
./d.txt
./e.txt
[root@TrueDei test]
创建一个二级目录再尝试查看一下。 也是可以查询所有的文件的
[root@TrueDei test]
[root@TrueDei test]
[root@TrueDei test]
[root@TrueDei test]
./a.txt
./b.txt
./config
./config/setting.ini
./c.txt
./d.txt
./e.txt
[root@TrueDei test]
[root@TrueDei test]
./a.txt ./b.txt ./c.txt ./d.txt ./e.txt
./config:
setting.ini
[root@TrueDei test]
查询并排除我们想排除的文件 grep 命令,应该很常用,可以过滤出来我们想要的数据。 如果需要排除我们不想要的数据的话,Linux也提供了一个egrep 命令;
[root@TrueDei test]
./a.txt ./b.txt ./c.txt ./d.txt ./e.txt
./config:
setting.ini
[root@TrueDei test]
[root@TrueDei test]
./a.txt
./b.txt
./c.txt
./d.txt
./e.txt
./config:
[root@TrueDei test]
[root@TrueDei test]
[root@TrueDei test]
./a.txt
./b.txt
./d.txt
./e.txt
./config:
[root@TrueDei test]
[root@TrueDei test]
配合rm 命令进行删除
[root@TrueDei test]
rm: remove regular empty file './a.txt'? y
rm: remove regular empty file './b.txt'? ^C
[root@TrueDei test]
[root@TrueDei test]
可以看到成功了。只保留了c.txt和setting.ini
[root@TrueDei test]
./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");
|