linux 中删除当前目录下指定文件外所有的文件
1、ls + grep + xargs 实现
a、
root@DESKTOP-1N42TVH:/home/test# touch test{1..10}.txt root@DESKTOP-1N42TVH:/home/test# touch abc{1..10}.csv root@DESKTOP-1N42TVH:/home/test# touch kk.map mn.ped root@DESKTOP-1N42TVH:/home/test# ls abc1.csv abc2.csv abc4.csv abc6.csv abc8.csv kk.map test1.txt test2.txt test4.txt test6.txt test8.txt abc10.csv abc3.csv abc5.csv abc7.csv abc9.csv mn.ped test10.txt test3.txt test5.txt test7.txt test9.txt root@DESKTOP-1N42TVH:/home/test# ls | grep -v "kk.map" abc1.csv abc10.csv abc2.csv abc3.csv abc4.csv abc5.csv abc6.csv abc7.csv abc8.csv abc9.csv mn.ped test1.txt test10.txt test2.txt test3.txt test4.txt test5.txt test6.txt test7.txt test8.txt test9.txt root@DESKTOP-1N42TVH:/home/test# ls | grep -v "kk.map" | xargs rm -rf ## 删除除kk.map外以外的所有文件 root@DESKTOP-1N42TVH:/home/test# ls kk.map
b、
root@DESKTOP-1N42TVH:/home/test# ls root@DESKTOP-1N42TVH:/home/test# touch test{1..10}.txt root@DESKTOP-1N42TVH:/home/test# touch abc{1..10}.csv root@DESKTOP-1N42TVH:/home/test# touch kk.map mn.ped root@DESKTOP-1N42TVH:/home/test# ls abc1.csv abc2.csv abc4.csv abc6.csv abc8.csv kk.map test1.txt test2.txt test4.txt test6.txt test8.txt abc10.csv abc3.csv abc5.csv abc7.csv abc9.csv mn.ped test10.txt test3.txt test5.txt test7.txt test9.txt root@DESKTOP-1N42TVH:/home/test# ls | grep -E -v "kk.map|mn.ped" abc1.csv abc10.csv abc2.csv abc3.csv abc4.csv abc5.csv abc6.csv abc7.csv abc8.csv abc9.csv test1.txt test10.txt test2.txt test3.txt test4.txt test5.txt test6.txt test7.txt test8.txt test9.txt root@DESKTOP-1N42TVH:/home/test# ls | grep -E -v "kk.map|mn.ped" | xargs rm -rf ## 删除除kk.map和mn.ped以外的所有文件 root@DESKTOP-1N42TVH:/home/test# ls kk.map mn.ped
2、find实现
a、
root@DESKTOP-1N42TVH:/home/test# ls root@DESKTOP-1N42TVH:/home/test# touch abc{1..10}.csv root@DESKTOP-1N42TVH:/home/test# touch kk.map mn.ped root@DESKTOP-1N42TVH:/home/test# touch test{1..10}.txt root@DESKTOP-1N42TVH:/home/test# ls abc1.csv abc2.csv abc4.csv abc6.csv abc8.csv kk.map test1.txt test2.txt test4.txt test6.txt test8.txt abc10.csv abc3.csv abc5.csv abc7.csv abc9.csv mn.ped test10.txt test3.txt test5.txt test7.txt test9.txt root@DESKTOP-1N42TVH:/home/test# find ./ -name "kk.map" ./kk.map root@DESKTOP-1N42TVH:/home/test# find ./ ! -name "kk.map" ./ ./test8.txt ./abc1.csv ./abc8.csv ./abc3.csv ./test6.txt ./test10.txt ./test2.txt ./abc10.csv ./test1.txt ./test9.txt ./test5.txt ./abc7.csv ./test7.txt ./abc2.csv ./abc6.csv ./abc4.csv ./test3.txt ./abc5.csv ./abc9.csv ./mn.ped ./test4.txt root@DESKTOP-1N42TVH:/home/test# find ./ ! -name "kk.map" -exec rm -rf {} \; #删除除kk.map文件以外的所有文件 rm: refusing to remove '.' or '..' directory: skipping './' root@DESKTOP-1N42TVH:/home/test# ls kk.map
b、
root@DESKTOP-1N42TVH:/home/test# touch kk.map mn.ped root@DESKTOP-1N42TVH:/home/test# touch test{1..10}.txt root@DESKTOP-1N42TVH:/home/test# touch abc{1..10}.csv root@DESKTOP-1N42TVH:/home/test# ls abc1.csv abc2.csv abc4.csv abc6.csv abc8.csv kk.map test1.txt test2.txt test4.txt test6.txt test8.txt abc10.csv abc3.csv abc5.csv abc7.csv abc9.csv mn.ped test10.txt test3.txt test5.txt test7.txt test9.txt root@DESKTOP-1N42TVH:/home/test# find ./ ! -name "kk.map" ! -name "mn.ped" ./ ./test8.txt ./abc1.csv ./abc8.csv ./abc3.csv ./test6.txt ./test10.txt ./test2.txt ./abc10.csv ./test1.txt ./test9.txt ./test5.txt ./abc7.csv ./test7.txt ./abc2.csv ./abc6.csv ./abc4.csv ./test3.txt ./abc5.csv ./abc9.csv ./test4.txt root@DESKTOP-1N42TVH:/home/test# find ./ ! -name "kk.map" ! -name "mn.ped" -exec rm -rf {} \; ## 删除除kk.map和mn.ped以外的所有文件 rm: refusing to remove '.' or '..' directory: skipping './' root@DESKTOP-1N42TVH:/home/test# ls kk.map mn.ped
3、rm !实现
a、
root@DESKTOP-1N42TVH:/home/test# touch kk.map mn.ped root@DESKTOP-1N42TVH:/home/test# touch test{1..10}.txt root@DESKTOP-1N42TVH:/home/test# touch abc{1..10}.csv root@DESKTOP-1N42TVH:/home/test# ls abc1.csv abc2.csv abc4.csv abc6.csv abc8.csv kk.map test1.txt test2.txt test4.txt test6.txt test8.txt abc10.csv abc3.csv abc5.csv abc7.csv abc9.csv mn.ped test10.txt test3.txt test5.txt test7.txt test9.txt root@DESKTOP-1N42TVH:/home/test# rm !(kk.map) ## 删除除kk.map文件以外的所有文件 root@DESKTOP-1N42TVH:/home/test# ls kk.map
b、
root@DESKTOP-1N42TVH:/home/test# touch kk.map mn.ped root@DESKTOP-1N42TVH:/home/test# touch test{1..10}.txt root@DESKTOP-1N42TVH:/home/test# touch abc{1..10}.csv root@DESKTOP-1N42TVH:/home/test# ls abc1.csv abc2.csv abc4.csv abc6.csv abc8.csv kk.map test1.txt test2.txt test4.txt test6.txt test8.txt abc10.csv abc3.csv abc5.csv abc7.csv abc9.csv mn.ped test10.txt test3.txt test5.txt test7.txt test9.txt root@DESKTOP-1N42TVH:/home/test# rm !(kk.map|mn.ped) ## 删除除kk.map和mn.ped以外的所有文件 root@DESKTOP-1N42TVH:/home/test# ls kk.map mn.ped
分类:
linux shell
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-01-06 c语言中for循环结构
2021-01-06 c语言中while循环步长大于2不存在后置运算??
2021-01-06 c语言中统计正整数的位数