我需要使用sftp将文件从本地MacBook移动到远程服务器。
我需要大约6000个文件并将它们移动到远程服务器进行处理。由于处理系统的限制,我一次最多只能处理100个文件。如果它监视的文件夹中有超过100个文件,处理系统将弹出。
我想设置一个脚本,以便每隔x#分钟通过crontab运行一次,并将包含6,500个文件的Mac文件夹中的100个文件移动到'staging'文件夹。然后第二个脚本将选取并将'staging'文件夹的内容上传到sftp文件夹。
我的crontab工作正常,但是,我无法弄清楚如何限制我移动到100的文件数。
这是我到目前为止所做的。也许我这样做完全错了,所以任何建议都会受到赞赏!
#!/bin/bash
cd /Users/Me/Downloads/test
# Get files from unprocessed where the 6k files are located.
ls unprocessed/*.pdf | head -n 99 > flist
while read f
do
mv "$f" .
done < flist
./ exp.sh
for f in *PAY*.pdf
do
mv "$f" processed/
done
任何帮助将不胜感激!
答案 0 :(得分:1)
您的ls
命令失败,因为shell将您的文件模式扩展为如此多的匹配文件,这些文件的名称聚合超过了单个命令行的限制。但请不要绝望,因为您可以简单地将ls
替换为find
:
find unprocessed -name '*.pdf' | head -n 99 > flist