我试图找出完成以下任务的“Linux 方式”。我有一个带有一堆子目录的目录,每个子目录都包含各种文件类型的多个文件。我可以使用“查找”命令轻松缩小范围:
find . -name "*.jpg"
这将返回所有以 .jpg 结尾的文件的列表。此外(但单独),我还可以使用 dirsplit 命令将目录分成文件组,每个文件组 100MB:
dirsplit --size 100MB -m --expmode 1 .
那么,现在有两个问题。首先,我想组合这两个命令,以便 dirsplit 仅作用于“find”命令的输出 - 即它仅重新排列那些 JPG,而不是重新排列所有内容。是否可以通过管道进入 dirsplit?
第二个问题是“-m”标志,您可以在这里看到:https://manned.org/dirsplit/15f31c9a将导致 dirsplit 实际上将文件移动到所需的文件夹。我的问题是是否可以复制而不是移动 - 也就是说,将文件保留在原处,但以 100 个为一组进行额外复制。
有任何想法吗?
答案1
dirsplit -H
将为您提供有关该命令的更多信息,包括将其与 find 一起使用的示例。
find . -name "*.jpg" -printf "%s %p" | dirsplit -T- --size 100MB --expmode 1 -L
-T-
从标准输入读取文件列表,格式为“文件名 文件大小”
-L
创建硬链接(似乎没有复制选项)