为什么有些选项不可用

为什么有些选项不可用

我一直在 Synology NAS(运行 BusyBox)上使用 bash。我最近需要重新安装操作系统。现在,我使用 du 生成包含文件夹大小的文件的脚本失败了,因为 du 现在的选项较少。 IE

du -hc --max-depth=1 --exclude=deleted --exclude=README.txt --exclude=#recycle /path/to/event_media/* >> /path/to/media_files_list.txt

给我:

du: unrecognized option '--max-depth=1'

所以当我...

du --help

我明白..

BusyBox v1.16.1 (2014-05-29 11:29:56 CST) multi-call binary.

Usage: du [-aHLdclsxhmk] [FILE]...

Summarize disk space used for each FILE and/or directory.
Disk space is printed in units of 1024 bytes.


Options:

    -a      Show file sizes too
    -L      Follow all symlinks
    -H      Follow symlinks on command line
    -d N    Limit output to directories (and files with -a) of depth < N
    -c      Show grand total
    -l      Count sizes many times if hard linked
    -s      Display only a total for each argument
    -x      Skip directories on different filesystems
    -h      Sizes in human readable format (e.g., 1K 243M 2G )
    -m      Sizes in megabytes
    -k      Sizes in kilobytes (default)

有一组减少的选项。

任何人都可以帮助我了解发生了什么变化以及如何设置它以重新获得对全套选项(例如最大深度和排除)的访问权限?

答案1

您尝试使用的选项位于GNU的版本du(来自核心工具包),这是您在非嵌入式 Linux 系统上找到的。您的 NAS 提供忙碌盒版本,这是您通常在嵌入式系统上找到的版本。 BusyBox 实用程序较小(磁盘空间较小,RAM 较小),但功能较少。

您需要安装 GNU coreutils 或根据系统上可用的内容调整脚本。 Google 搜索建议您可以安装 GNU coreutils通过ipkg

答案2

我只是想让最重要的答案在这一点上更清楚。

您仍然可以max-depth=#在 busybox 上使用du,但只需更改为

du --max-depth=#
# Becomes
du -d #

对于排除文件夹,您可以没有参数,但您可以只选择您想要的文件夹

du --exclude folder3
# Becomes
du folder1 folder2 folder4

相关内容