Skip to content
/ udu Public

extremely fast and cross-platform disk usage analyzer with parallel traversal engine implemented with openmp

License

Notifications You must be signed in to change notification settings

gnualmalki/udu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UDU

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.

CI

See Benchmarks.

Build Instructions

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.

UNIX

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

Windows (MSYS2)

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.

Windows (MSVC)

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

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>

License

THIS PROGRAM IS DISTRIBUTED UNDER GPL-3-OR-LATER; SEE THE LICENSE FILE FOR DETAILS.

Acknowledgements

  • Thanks to OpenMP specifications and its implementations by GCC and LLVM for making FOSS high-performance parallel computing possible.

  • Thanks to xPack for providing the GCC version used in CI.

About

extremely fast and cross-platform disk usage analyzer with parallel traversal engine implemented with openmp

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •