我编写了一个简单的 shell 脚本,用于ncftpput将本地目录中的所有目录递归上传到远程目录。我的 shell 脚本upload.sh放在这个本地目录中,我想从上传中排除它。有没有办法做到这一点?
ncftpput -R -v -u myUsername -p myPassword myAddress /remoteDir /localDir/*
Run Code Online (Sandbox Code Playgroud)
我试过这样做:
for i in `ls /localDir | grep -v upload.sh`; do
ncftpput -R -v -u myUsername -p myPassword myAddress /remoteDir /localDir/$i
done
Run Code Online (Sandbox Code Playgroud)
但是带有空格的目录将被视为两个目录。例如,将考虑“我的目录”:
您可以使用 find 分别上传所有其他元素:
find /localDir -mindepth 1 -maxdepth 1 ! -name "upload.sh" -exec ncftpput -R -v -u myUsername -p myPassword myAddress /remoteDir {} \;
跳过-exec它之后的所有内容,只打印匹配的文件和文件夹,用于测试..
您也可以考虑IFS在 bash 中重新定义,或在您的 shell 中重新定义,但仍然会因文件名包含换行符而失败。
当然,最简单的解决方案是不要将上传脚本与要上传的数据混合在一起......
| 归档时间: |
|
| 查看次数: |
2429 次 |
| 最近记录: |