我需要使用 sftp 将文件从我的本地 MacBook 移动到远程服务器。
我需要将大约 6000 个文件移动到远程服务器进行处理。由于处理系统的限制,我一次最多只能处理100个文件。如果其监控的文件夹中的文件超过 100 个,处理系统将崩溃。
我想设置一个脚本,以便每隔 x # 分钟通过 crontab 运行一次,并将 100 个文件从 Mac 上包含 6,500 个文件的文件夹移动到“暂存”文件夹。然后第二个脚本将获取“staging”文件夹的内容并将其上传到 sftp 文件夹。
我的 crontab 工作正常,但是,我不知道如何将移动的文件数限制为 100。
这是我到目前为止所做的。也许我做的完全错了,所以任何建议将不胜感激!
#!/bin/bash
cd /Users/Me/Downloads/test
# Get files from unprocessed where the 6k files are located.
“ls”命令返回“-bash:/bin/ls: Argument list too long”错误
ls unprocessed/*.pdf | head -n 99 > flist
while read f
do
mv "$f" .
done < flist
此脚本会将其上传到 sftp 服务器。
./exp.sh
这会在完成时将其移动到一个单独的文件夹
for f in *PAY*.pdf
do
mv "$f" processed/
done
任何帮助将不胜感激!
最佳答案
您的 ls
命令失败,因为 shell 将您的文件模式扩展为太多匹配文件,以至于它们的名称加起来超过了单个命令行的限制。但不要绝望,因为您可以简单地将 ls
替换为 find
:
find unprocessed -name '*.pdf' | head -n 99 > flist
关于linux - 需要在 MacO 上移动有限数量的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18156704/