macos - 递归地将所有文件移动到一个文件夹,保留最大的文件

标签 macos bash terminal

我有一个需要合并的大图像文件夹,我使用以下方法完成了第一步:

find ./products_raw -type f -exec cp {} products_processed  \;

但是,它们来自的文件夹结构还包含同名的缩略图,因此文件夹中最终的图像大小取决于运气。我的逻辑是,如果我可以检查文件是否更大,那么它很可能就是正确的文件。不知道如何实现这一点,通常的搜索没有显示任何太清晰的内容。

干杯!

编辑:应该提到,我正在使用 OSX

最佳答案

嗯,答案相当简单。

首先您会获得文件列表及其大小:

find . -type f -printf '%s\t%f\t%p\n'

将有 3 列:大小、文件名、文件路径(带名称)。

然后按大小对其进行排序,以更早地制作更大的文件:

find . -type f -printf '%s\t%f\t%p\n' | sort -nr

然后,通过 awk 传递它以删除重复的文件名:

find . -type f -printf '%s\t%f\t%p\n' | \
    sort -nr | \
    awk -F'\t' '!c[$2]++ {print $3}'

最后,将文件复制到目标目录:

find . -type f -printf '%s\t%f\t%p\n' | \
    sort -nr | \
    awk -F'\t' '!c[$2]++ {print $3}' | \
    xargs -d'\n' cp -t wherever/

关于macos - 递归地将所有文件移动到一个文件夹,保留最大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17150824/

相关文章:

macos - 增量捆绑版本错误 - Fastfile

linux - 如何通过 unix shell 脚本从远程服务器为特定用户发送电子邮件

java - LSOF 命令不显示 java 和类文件

c++ - 无法再正确读取文本文件

macos - 奇怪的是,在 Jmeter 中复制和粘贴文本不适用于 Mac

swift - 保存/加载文件: "warning: dynamic accessors failed to find @property implementation for ' uniqueId'"

bash - 为什么要在 bash 中休眠和等待?

linux - "sudo ./xampp-linux-x64-5.6.3-0-installer.run"有什么作用?

macos - 为什么标签会在 Safari 5.1 中自动刷新?

linux - 用于重命名文件以确保破折号两边都有空格的 Bash 脚本