遍历文件夹,是文件就put上去,不是文件就创建目录。
根据自己的需求改一下前面的directory
、serverpath
、des_directory
就可以用了
在代码中smbclient中使用了-N,因为我用的是匿名登录,加了-N就不需要提示输入密码了。
#!/bin/bash
read -p "请输入一个字符串:" string
# 指定要遍历的文件夹路径
directory="play-$string"
echo "你输入的版本号是:$string, 遍历的文件夹为:$directory"
# smb服务器
serverpath="//192.168.10.10/研发"
# smb服务器目标文件夹下
des_directory="软件"
# 递归遍历函数
function handleDir {
# 循环目录
for file in "$1"/*
do
# 如果是文件,则直接处理
if [ -f "$file" ]
then
# 上传文件 put
smbclient $serverpath -N -c "cd $des_directory;put ./$file ./$file"
fi
# 如果是目录,创建目录后,递归处理
if [ -d "$file" ]
then
# 在smb服务器创建该文件夹
smbclient $serverpath -N -c "cd $des_directory;mkdir ./$file"
# 递归处理子目录
handleDir "$file"
fi
done
}
# 判断文件夹在不在
if test -d $directory; then
# 在smb服务起,创建这个文件夹
smbclient $serverpath -N -c "cd $des_directory;mkdir $directory"
#开始遍历目录
handleDir $directory
else
echo "文件夹不存在!"
fi