首页 > 解决方案 > 查找具有条件的最大文件并将其复制到特定目录

问题描述

我有/usr/process许多子目录的目录。我想找到最大的文件名为*calculation*. 可能有数百万个文件可供搜索。

当我使用下面的命令并根据大小进行排序并获取最大的文件并将其复制到/它时,速度非常慢。

find /usr/process -name '*calculation*' | xargs -n 1 -i cp {} /usr/share/backup
  1. 如何过滤 find 命令以获取最大的文件并复制它?
  2. 如何过滤 find 命令以获取 10 个最大的文件并复制它?
  3. 如何过滤 find 命令以获取最小的文件并复制它?
  4. 如何过滤 find 命令以获取 10 个最小的文件并复制它?

标签: linuxshellfind

解决方案


如果您知道文件名(“计算”),我认为没有兴趣运行find.

如果您需要查找 n 个(这里,n=3)个最大的文件,您可以使用du,它代表“磁盘使用情况”:

du -a /usr/bin/ 2>/dev/null | sort -n -r | head -n 3
478328  /usr/bin/
26024   /usr/bin/burpsuite
16692   /usr/bin/mariabackup

当然,您需要使用自己的目录/usr/process

或者,因为这更容易管道它,您可以使用find如下:

find $HOME -type f -printf '%s %p\n' | sort -nr | head -10
10485760 /root/.mozilla/firefox/p4r990u7.default/places.sqlite
10240000 /root/.cache/tracker/meta.db-wal
7964784 /root/.mozilla/firefox/p4r990u7.default/gmp-widevinecdm/1.4.8.903/libwidevinecdm.so
6136581 /root/.local/share/tracker/data/tracker-store.journal
6127616 /root/.mozilla/firefox/p4r990u7.default/webappsstore.sqlite
5615597 /root/.mozilla/firefox/p4r990u7.default/storage/temporary/https+++regex101.com/asmjs/module15
4728570 /root/.cache/mozilla/firefox/p4r990u7.default/safebrowsing/goog-phish-shavar.sbstore
4493312 /root/.cache/tracker/meta.db

然后,您可以根据需要对其进行管道传输。


推荐阅读