上传目录时排除文件

Sim*_*nBS 1 ftp exclude

我编写了一个简单的 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)

但是带有空格的目录将被视为两个目录。例如,将考虑“我的目录”:

  1. /本地目录/我的
  2. /localDir/目录

Dan*_*eck 6

您可以使用 find 分别上传所有其他元素:

find /localDir -mindepth 1 -maxdepth 1 ! -name "upload.sh" -exec ncftpput -R -v -u myUsername -p myPassword myAddress /remoteDir {} \;

跳过-exec它之后的所有内容,只打印匹配的文件和文件夹,用于测试..


您也可以考虑IFS在 bash 中重新定义,或在您的 shell 中重新定义,但仍然会因文件名包含换行符而失败。

当然,最简单的解决方案是不要将上传脚本与要上传的数据混合在一起......