博客主页:
博主昵称:农民工老王
主要领域:Java、Linux、K8S
期待大家的关注💖点赞👍收藏⭐留言💬
工作中遇到如下一个需求:某计算机上的 /nfs/k8s文件夹存在数千个文件,现在只需保留其中指定的一百多个文件(这些文件已经写在一个清单文件中),其余的文件全部删除。
文件清单示例:
/nfs/k8s/gistage-data-elasticsearch-0-pvc-8f068e9f-e23e-4f51-8886-688802c8d782
/nfs/k8s/gistage-data-redis-ha-0-pvc-901c542e-8c58-4e21-b120-0c2449eb9a6c
/nfs/k8s/gek-data-volume-1-geos-object-store-vyu4m-0-pvc-92139c17-6f52-429f-bb16-9df5c215799c
/nfs/k8s/gek-portal-sharing-volume-geos-rest-portal-api-kiebf-0-pvc-9aa2d190-d118-45c9-a97a-795ed91daaf2
/nfs/k8s/gek-data-volume-geos-in-memory-store-vzze2-0-pvc-a3f5b599-c028-401b-af11-4d4c4dfa51fe
/nfs/k8s/gistage-data-elasticsearch-2-pvc-a520dd36-6490-4e9f-8e24-331a71fc4eae
/nfs/k8s/gisns-test-geoscene-global-postgres0002-pvc-pvc-a9a71aa5-20ef-4e12-96ba-a12463dd85df
/nfs/k8s/luxin-11-data-volume-luxin-relational-store-anwzs-n40l-0-pvc-bae36f33-24e3-47b5-ba57-96cc54e0eec1
/nfs/k8s/luxin-11-portal-sharing-volume-luxin-rest-portal-api-sd4mh-0-pvc-c866d65a-0bbd-4bd6-9dfd-9f686e5610ea
/nfs/k8s/luxin-11-data-volume-luxin-in-memory-store-y24qg-0-pvc-c9020c58-5e2f-46da-8d16-7324445d926e
/nfs/k8s/gisns-test-geoscene-micro-service0011-pvc-pvc-ce64fc7a-1862-4319-8cf0-ef939cad05ee
/nfs/k8s/gy-innovator-java-directories-pvc-pvc-d0667f2f-6619-4505-bbcd-0b9e7f7e2f6d
/nfs/k8s/gy-innovator-database-pvc-pvc-db4eef4b-20a7-4fd1-a9fd-a20ad9fa877a
/nfs/k8s/gisns-test-geoscene-micro-service0004-pvc-pvc-e32c2943-f040-4c94-8ace-c80405e2a2a0
/nfs/k8s/luxin-11-data-volume-luxin-object-store-nfmn2-il3si-0-pvc-eb72eeee-04d4-471d-9e96-162009231698
通过shell的双层for循环实现了一个脚本,可实现在上述需求。
#!/bin/bash
# ------------------------------------------
# Filename : cleaner.sh
# Version : 1.1
# Date : 2023-2-26 18:30:23
# Author : 农民工老王@CSDN
# Email : scwja@qq
# Website :
# Description : 用于在保留白名单文件的前提下,删除剩余文件。
# ------------------------------------------allFiles=`ls -l "$1" |awk '{print $9}'`
doNotDel=`cat $2`tempIFS="$IFS"
IFS=$'n'for line in $allFiles
dodoNotDelFile=0for l in $doNotDeldoif [ "w${1}/${line}" = "w${l}" ]; thendoNotDelFile=1echo "保留 $line"breakfidoneif [ ${doNotDelFile} -eq 0 ]; thenecho "删除 ${1}/${line}"rm -rf "${1}/${line}"fi
doneIFS="${tempIFS}"
调用方法为./${脚本名} ${待删除文件夹绝对路径} ${白名单文件清单文件}
,如 ./cleaner.sh /nfs/
。
如需转载,请注明本文的出处:农民工老王的CSDN博客 。
本文发布于:2024-02-01 04:19:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170673236533806.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |