UDU is an extremely fast, cross-platform tool for summarizing file and directory sizes by recursively scanning directories using a parallel traversal engine implemented with OpenMP, making it significantly faster than traditional tools on multi-core systems.
See Benchmarks.
Building UDU requires a modern C compiler such as GCC 9.5 or later, Clang 14.0.6 or later, MSVC 17.2 or later, CMake 3.15 and OpenMP 3.0 or later (optional: parallel processing).
NOTE ON WINDOWS: MSVC versions less than 17.2 lack support for the OpenMP 3.0 features required by this program. If you're using an older MSVC version, the build system will automatically detect this and compile without OpenMP (single-threaded mode). For maximum performance on Windows, we recommend using MSVC 17.2 (VS 2022) or later with the LLVM OpenMP runtime (the build system handles that for you), or alternatively GCC or Clang through MSYS2 or Cygwin, which provide modern toolchains with complete OpenMP 3.0 support.
Clone the repository and build using these commands:
git clone --depth=1 https://github.com/gnualmalki/udu.git
cd udu
cmake -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=ON -DENABLE_LTO=ON
cmake --build build
After installing MSYS2, open the UCRT64 terminal and install the required packages using pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-cmake, then follow the UNIX instructions above.
Using Developer Command Prompt or PowerShell with the Visual Studio environment:
git clone --depth=1 https://github.com/gnualmalki/udu.git
cd udu
cmake -B build -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=ON -DENABLE_LTO=ON
cmake --build build --config Release
Usage: udu [option(s)]... [path(s)]...
extremely fast disk usage analyzer with parallel traversal engine.
OPTIONS:
-a, --apparent-size show file sizes instead of disk usage
(apparent = bytes reported by filesystem,
disk usage = actual space allocated)
-h, --help display this help and exit
-q, --quiet display output at program exit (default)
-v, --verbose display each processed file
--version display version info and exit
-X, --exclude=PATTERN skip files or directories that match glob pattern
* any characters
? single character
[abc] any char in set
Examples: '*.log', 'temp?', '[0-9]*'
EXAMPLE:
udu ~/ -avX epstein-files
Report bugs to <https://github.com/gnualmalki/udu/issues>
THIS PROGRAM IS DISTRIBUTED UNDER GPL-3-OR-LATER; SEE THE LICENSE FILE FOR DETAILS.