Linux应用服务部署前清理文件:如何排除指定文件夹?
解决部署前排除指定文件夹删除的问题
原脚本中find命令的参数逻辑和顺序有误,导致无法保留webroot/uploads文件夹及其内容。需调整命令参数,借助-prune跳过目标目录,再执行删除操作。
修改后的完整脚本
$bodyToPOST = @{ command = "find . -mindepth 1 -path `"./webroot/uploads`" -prune -o -delete" dir = "/home/site/wwwroot" } # Splat all parameters together in $param $param = @{ # command REST API url Uri = "https://$WebAppName.scm.omited.appserviceenvironment.net/api/command" Headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)} Method = "POST" Body = (ConvertTo-Json $bodyToPOST) ContentType = "application/json" } # Invoke REST call Invoke-RestMethod @param
关键命令说明
-path "./webroot/uploads" -prune:精准匹配当前目录下的webroot/uploads文件夹,-prune指令会让find直接跳过该目录及其内部所有子项的遍历,从根源避免误删。-o -delete:-o代表逻辑或,即对不满足前面匹配条件的内容(也就是除webroot/uploads之外的所有文件和目录)执行删除操作。- 参数顺序要求:
-delete必须放在所有条件判断之后,否则find会优先执行删除动作,导致排除逻辑完全失效。
内容的提问来源于stack exchange,提问作者TechFanDan
相关产品推荐
相关产品推荐

