如何截取小于x的文件?


13

我正在笔记本电脑上进行开发,然后将文件存储到高性能PC(无监视器的服务器)上。出于懒惰,我目前(在笔记本电脑上)只是这样做:

scp -r ~/project/* server:~/project/

但是,项目目录中的某些文件是一些日志文件和输出文件,这些文件我不需要发送,有时可能是演出或左右。我想要的是一个很好的clean命令,该命令基本上执行相同的操作(传输项目及其子目录中的所有文件),但仅发送特定文件大小阈值(例如100 mb)下的文件。我只是对bash有一定的经验,而对regexp则完全没有,所以我真的不知道如何在没有一些复杂的方法的情况下执行此操作,例如将sys导入python并使用大量ifs和进行比较。

Answers:


27

您可以使用“ rsync”命令,该命令具有控制要排除的文件大小的选项。

rsync -rv --max-size=100m /path/in/local/ server:~/project/

来自“ man rsync ”,

--max-size=SIZE    don't transfer any file larger than SIZE

更新的答案:只需使用以下“ rsync” --exclude选项排除日志文件

rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/

或者您可以将“ find”命令与“ scp”结合使用,并通过其-size选项指定文件大小限制。用于! -name '*.log'排除某些以“ log”结尾的文件。

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;

1
OP的注释:rsync与相似scp,但效率更高,因为它仅在修改文件后才传输更改。
帕迪·兰道

小心的目录顺序rsync -rv --max-size SOURCE DESTINATION。我没有正确阅读,这可能带来非常糟糕的后果。
toto_tico
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.