计算目录中的文件数,然后scp传输一定的范围,如21404-42806

时间:2015-10-26 18:00:51

标签: scp ls wc

我发现/ dev / shm / split / 1 /中的文件数量为42806,使用:

/bin/ls -lU /dev/shm/split/1/ | wc -l

我似乎无法在网上找到的是如何选择某个范围,例如21404-42806,并使用scp安全地复制这些文件。然后,出于管理目的,我想将我复制的文件移动到另一个文件夹,例如/ dev / shm / split / 2 /。

如何使用CentOS做到这一点?

我试过了:

sudo chmod 400 ~/emails/name.pem ; ls -1 /dev/shm/split/1/ | sed -n '21443,42806p' | xargs -i scp -i ~/emails/name.pem {} root@ipaddress:/dev/shm/split/2/ 

这产生了:

no such file or directory

所有文件的错误......

1 个答案:

答案 0 :(得分:1)

ls本身列出了与您提供的目录相关的文件。这意味着您的ls打印目录中的文件名,但稍后,scp没有它们的路径。您可以通过以下两种方式解决这个问题:

提供scp的路径:

ls -1 /dev/shm/split/1/ | sed -n '21443,42806p' | xargs -i \
  scp -i ~/emails/name.pem /dev/shm/split/1/{} root@ipaddress:/dev/shm/split/2/ 

更改到该目录,它将起作用:

cd /dev/shm/split/1/; ls -1 | sed -n '21443,42806p' | xargs -i \
  scp -i ~/emails/name.pem {} root@ipaddress:/dev/shm/split/2/