我正在下面的bash腳本,我需要上傳超過10 MB的特定文件:LFTP把文件放在特定的目錄下?
#!/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/