我正在处理以下 bash 脚本,我需要上传超过 10 MB 的特定文件:
#!/bin/sh
FTP_HOST=ftp.ftphost.com
FTP_USER=myftpuser
FTP_PASS=securepassword
[[ -n "$1" ]] || { echo "Usage: findlarge [PATHNAME]"; exit 0 ; }
FILES=`find "$1" -type f -size +10000k -printf '%p;'`
OLD_IFS="$IFS"
IFS=";"
FILES_ARRAY=( $FILES )
IFS="$OLD_IFS"
for fl in "${FILES_ARRAY[@]}"
do
INVERSE=`${fl//\/var\/www\/html/\/public_html}`
lftp -u $FTP_USER,$FTP_PASS -e "cd '${INVERSE}'; put '${fl}';quit" $FTP_HOST
done
它用于需要将较大文件上传到其服务器的特定 CDN,它正在尝试做什么,而我不知道如何继续是在主机端找到文件/var/www/html/
但远程服务器需要将它们放置在/public_html/
. 我在远程服务器上需要与在主机服务器上相同的文件结构。
我遇到的问题$INVERSE
仍然包括实际的文件名和路径。我需要一种方法从 INVERSE 变量中删除文件名,以便我可以正确地将文件放在正确的目录中。
有谁知道一个正则表达式语句可以采用以下内容:
/public_html/path/to/file/filename.zip
并将其更改为
/public_html/path/to/file/