每当我尝试在bash中传输文件(SCP),它们看起来会以一个似乎随机(?)的顺序结束。
我发现保持所需顺序的一种简单但不太优雅的方法,如下所述。是否有更聪明的方法呢?编辑:从这里删除了我的早期解决方案,清理并使用其他建议进行调整,并将其作为下面的答案添加。
我发现保持所需顺序的一种简单但不太优雅的方法,如下所述。是否有更聪明的方法呢?编辑:从这里删除了我的早期解决方案,清理并使用其他建议进行调整,并将其作为下面的答案添加。
scp
命令,假设您有远程服务器的访问密钥:scp -r $(ls -rt) user@foo.bar:/where/you/want/them/.
tar
,然后发送tar文件,即tar -zcvf files.tar.gz $(ls -rt)
,然后仅使用scp
发送该tar文件。
scp
命令将文件发送到例如您的笔记本电脑。相反,您可能需要将文件“带入”到您的笔记本电脑中。我的暴力解决方案是:
cd
进入要从中复制文件的文件夹。ls -rt > ../filenames.txt
pwd
打印路径。现在进入上一级目录:cd ..
cat filenames.txt | awk '{print "path/to/files/" $0}' > delete_me.txt
tr '\n' ' ' < delete_me.txt > filenames.txt
scp -r user@foo.bar:"$(cat filenames.txt)" .
使用rsync
可以按字母顺序实现文件传输:
rsync -P -e ssh -r user@remote_host:/some_path local_path
P
允许部分下载,e
设置 SSH 协议,r
递归下载。
您可以使用xargs
在一行中完成操作,而不需要中间步骤:
ls -r <directory> | xargs -I {} scp <Directory>/{} user@foo.bar:folder/
cd <directory>
scp $(ls -r) user@foo.bar:folder/
ls -r
将反转列出的文件顺序。但默认情况下,ls
按字典顺序而非年龄顺序列出文件。 - kojiro