关于IT运维技术的
最佳实践博客网站

linux面试题:删除某个目录下的所有文件,但保留一个指定文件

[su_quote]从运维角度,任何删除性的操作都应该事先备份后在执行或者确认有备份存在。[/su_quote]

批量创建1M测试文件:

# 创建10个1M的文件
seq 10 | xargs -i dd if=/dev/zero of={}.test bs=1M count=1

方法1:

[root@zabbix data]# ls
10.test  2.test  4.test  6.test  8.test
1.test   3.test  5.test  7.test  9.test
[root@zabbix data]# find /data/ -type f ! -name "10.test" | xargs rm -f
[root@zabbix data]# ls
10.test

方法2:

[root@zabbix data]# ls
10.test  2.test  4.test  6.test  8.test
1.test   3.test  5.test  7.test  9.test
[root@zabbix data]# find /data/ -type f ! -name "10.test" -exec rm -f {} \;
[root@zabbix data]# ls
10.test

方法3:同步并删除目标目录中不包含源目录的文件

[root@zabbix data]# ls
10.test  2.test  4.test  6.test  8.test
1.test   3.test  5.test  7.test  9.test
[root@zabbix data]# touch /tmp/{1..10}.txt
[root@zabbix data]# ls /tmp/
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt
[root@zabbix data]# rsync -avz --delete --exclude "10.test" /data/ /tmp/
sending incremental file list
./
deleting 9.txt
deleting 8.txt
deleting 7.txt
deleting 6.txt
deleting 5.txt
deleting 4.txt
deleting 3.txt
deleting 2.txt
deleting 10.txt
deleting 1.txt
1.test
2.test
3.test
4.test
5.test
6.test
7.test
8.test
9.test

sent 9775 bytes  received 186 bytes  19922.00 bytes/sec
total size is 9437184  speedup is 947.41
[root@zabbix data]# ll /tmp/
总用量 9216
-rw-r--r--. 1 root root 1048576 6月  29 01:25 1.test
-rw-r--r--. 1 root root 1048576 6月  29 01:25 2.test
-rw-r--r--. 1 root root 1048576 6月  29 01:25 3.test
-rw-r--r--. 1 root root 1048576 6月  29 01:25 4.test
-rw-r--r--. 1 root root 1048576 6月  29 01:25 5.test
-rw-r--r--. 1 root root 1048576 6月  29 01:25 6.test
-rw-r--r--. 1 root root 1048576 6月  29 01:25 7.test
-rw-r--r--. 1 root root 1048576 6月  29 01:25 8.test
-rw-r--r--. 1 root root 1048576 6月  29 01:25 9.test

方法4:–delete-before 接收者在传输之前进行删除操作

  • –delete-before 接收者在传输之前进行删除操作
  • –progress 在传输时显示传输过程
  • -a 归档模式,表示以递归方式传输文件,并保持所有文件属性
  • -H 保持硬连接的文件
  • -v 详细输出模式
  • –stats 给出某些文件的传输状态
[root@zabbix data]# ls
10.test  2.test  4.test  6.test  8.test
1.test   3.test  5.test  7.test  9.test
[root@zabbix data]# rsync --delete-before -azHvsp --exclude "10.test" /data/ /tmp/
building file list ... done
./
1.test
2.test
3.test
4.test
5.test
6.test
7.test
8.test
9.test

sent 9775 bytes  received 186 bytes  19922.00 bytes/sec
total size is 9437184  speedup is 947.41
[root@zabbix data]# ls /tmp/
1.test  2.test  3.test  4.test  5.test  6.test  7.test  8.test  9.test

方法5:

[root@zabbix data]# ls
10.test  2.test  4.test  6.test  8.test
1.test   3.test  5.test  7.test  9.test
[root@zabbix data]# rm -f !(10.test)
[root@zabbix data]# ls
10.test

方法6:

[root@zabbix data]# ls
10.test  2.test  4.test  6.test  8.test
1.test   3.test  5.test  7.test  9.test
[root@zabbix data]# rm -rf `ls | grep -v "10.test"`
[root@zabbix data]# ls
10.test

方法7:

[root@zabbix data]# ls
10.test  2.test  4.test  6.test  8.test
1.test   3.test  5.test  7.test  9.test
[root@zabbix data]# find /data/ -type f | grep -v "10.test" | xargs rm -f
[root@zabbix data]# ls
10.test

 

赞(0)
未经允许不得转载:菜鸟HOW站长 » linux面试题:删除某个目录下的所有文件,但保留一个指定文件
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址