如何使用终端复制不大于 200MB 的文件?

如何使用终端复制不大于 200MB 的文件?

问题说明了一切。我想在终端中复制文件,但有几个大文件我不想复制(因为它们是备份)。有命令可以做到这一点吗?

就像是cp --max-size=200MB

我知道rsync有这样的选项。这是可行的方法吗?

答案1

尝试使用find命令建立一个 200MB 以下的文件列表并将它们复制到dir.

find . -size -200M -exec cp -r {} dir/ \;

答案2

以下是我的做法rsync

rsync --max-size=200MB --progress --verbose --recursive --links --perms  --ignore-existing --executability --owner --group --times SOURCE TARGET

尽管如此,我还是愿意接受一个cp解决方案。

答案3

find . -size -200M -exec cp -r {} dir/ \;

对我来说不起作用,因为它在找到文件夹时会复制所有文件,因为 cp 上有“r”标志。我必须执行以下操作:

  1. 获取文件大小为 -200MB 的文件列表

     find /yourdirectory -type f -size -200M > list.txt
    
  2. 然后,从list.txt中复制文件。

     cp --parents  $(cat list.txt) /newFolder
    

    “cp”和“--parents”标志将复制文件并创建必要的文件夹树。

  3. 之后,您必须将文件夹移动到正确的位置,但这很简单。

希望能帮助到你。

相关内容