复制完成大于1024M的文件到另外一个目录

复制完成大于1024M的文件到另外一个目录

我正在使用 transmission-daemon。这些是 transmission-daemon 支持的 torrent 完成环境变量,如下所示这里. 在下载完成的目录中,找到并复制所有大于 1024M 的文件到另一个目录。

这不起作用:

find $TR_TORRENT_DIR/$TR_TORRENT_NAME -type f -size +1024M -exec cp {} /path/to/copies/ \;

这可行,但是会使用包含所有已完成种子的目录:

find $TR_TORRENT_DIR -type f -size +1024M -exec cp {} /path/to/copies/ \;

这确实有效,并复制了已完成的 torrent 的父目录:

cp -R "$TR_TORRENT_DIR/$TR_TORRENT_NAME" "/path/to/copies/"

任何帮助将不胜感激!

答案1

  1. 您想将完成的种子复制到新位置
  2. 您有一个目录 ($TR_TORRENT_DIR),所有下载的种子都存放在此目录中。在此目录中,每个新种子都有自己的目录 ($TR_TORRENT_NAME)。

鉴于这些假设,

find $TR_TORRENT_DIR

搜索所有文件夹而不只是一个文件夹。

更新:查找 1G 及更大的文件,获取文件路径,将文件的整个父目录复制到目标。

它看起来可能像下面这样。可以改进它以识别是否在同一父目录的子目录中找到两个或多个文件,并且只复制一次。

find $TR_TORRENT_DIR/ -type f -size +1024M -exec echo {} \; \
| while read filepath
do
    parentdir=$(dirname $filepath)
    cp -a $parentdir /path/to/copies/
done

请注意,如果文件名包含外来字符,上述操作可能会中断。

答案2

也许:

cd "$TR_TORRENT_DIR" && cp -R "$TR_TORRENT_NAME" "/path/to/copies/"

答案3

find "$TR_TORRENT_DIR/$TR_TORRENT_NAME" -type f -size +1024M -exec cp {} /path/to/copies/ \;

相关内容