将文件复制到满足规则的 x 个位置的脚本

将文件复制到满足规则的 x 个位置的脚本

我想创建一个自动脚本,它会要求我输入一个指定的文件夹,在选择后,我希望它搜索以下内容并执行 x 项任务

  • 如果文件是 .mkv 且文件名不包含“sample”且小于 2GB,则复制到 x 位置
  • 如果文件是 .mkv 且文件名中不包含“sample”,且大小 > 2GB,则复制到 z 位置。对于任何不满足这些要求的文件,应将该文件与所选的父文件夹一起删除。

答案1

你可以在代码编辑器中运行这样的 shell 脚本文本伴侣

d=~/Folder
find "$d" -name '*.mkv' -a ! -name '*sample*' -a -size -2G -exec cp {} ~/x \;
find "$d" -name '*.mkv' -a ! -name '*sample*' -a -size +2G -exec cp {} ~/z \;
rm -r "$d"
  • \; 每次只接受一个参数(\+ 会接受多个参数),但在这种情况下,复制文件所花的时间比启动新的 cp 进程要长得多
  • 2G 为 2 GiB(2*2^30 字节)
  • +2G 和 -2G 是独有的,但可能不会有正好 2G 的文件
  • {} 无需加引号
  • cp 不会保留修改或创建时间,除非您添加 -p(或 -a,暗示 -p)
  • 您还可以使用垃圾而不是 rm -r

相关内容