/oss · 10 merged

uutils/findutils

A rewrite of the find and xargs tools in Rust, aiming to work the same as GNU findutils.

the project on GitHub (opens in a new tab)
  1. 29 Oct 2026

    find prints numbers and names with the same formatting options as GNU

    What was broken
    find's custom print format only knew a width. Asking to cut a name short, pad a number with zeros, or show a sign printed the format code itself plus warnings.
    What I changed
    find now understands those options the same way GNU find does, for every kind of value it can print.
    Why it matters
    Scripts that format find's output for GNU find now give the same result here.

    see the code, #918 (opens in a new tab)

  2. 26 Oct 2026

    find -ls shows file times in your own time zone

    What was broken
    find's -ls output showed modification times in UTC, so on most machines the time was off by hours compared to GNU find and ls.
    What I changed
    The time is now shown in the local time zone, in both the Unix and Windows code.
    Why it matters
    File listings show the same times as every other tool on the machine.

    see the code, #922 (opens in a new tab)

  3. 25 Oct 2026

    xargs -I reads input lines like GNU

    What was broken
    With -I, each input line went in raw: leading spaces stayed, blank lines still ran the command, quotes were kept and the end marker was ignored.
    What I changed
    -I now skips leading blanks and blank lines, handles quotes like plain xargs, and stops at the end marker, keeping each line as one argument.
    Why it matters
    Scripts that feed lines to xargs -I get the same commands as on GNU systems.

    see the code, #921 (opens in a new tab)

  4. 25 Oct 2026

    xargs splits arguments only at spaces, tabs and newlines

    What was broken
    xargs also split arguments at carriage returns and form feeds. A file with Windows line endings lost the carriage return at the end of each line's last word.
    What I changed
    Only spaces, tabs and newlines separate arguments now. Other control characters stay inside the word, as in GNU xargs.
    Why it matters
    Input with Windows line endings or other control characters gives the same arguments as with GNU xargs.

    see the code, #920 (opens in a new tab)

  5. 24 Oct 2026

    A test keeps the stop-printing escape honest

    What was broken
    The earlier fix that made find stop a print format at the stop escape had no test showing that the next action still runs for each file.
    What I changed
    A new test runs two print actions and checks that the second still runs after the first stops early, matching GNU find.
    Why it matters
    The fix cannot quietly break later without a test failing.

    see the code, #919 (opens in a new tab)

  6. 24 Oct 2026

    Dates in -printf pad the day with a space

    What was broken
    The %t, %a and %c dates in find's -printf wrote early days of the month with a leading zero, like Jan 02, while GNU find writes Jan 2.
    What I changed
    The day is now padded with a space, the classic format GNU find uses.
    Why it matters
    Output that scripts compare or parse matches GNU find.

    see the code, #917 (opens in a new tab)

  7. 24 Oct 2026

    The -ls listing shows real disk usage and link targets

    What was broken
    find's -ls listing showed every file's size rounded up as its disk usage, so a mostly empty sparse file looked huge, and symlinks did not show where they point.
    What I changed
    It now shows the space a file really uses on disk, and each symlink is followed by an arrow and its target, like GNU find.
    Why it matters
    Scripts and people reading -ls output see the same columns as with GNU find.

    see the code, #916 (opens in a new tab)

  8. 24 Oct 2026

    \c in -printf stops the output

    What was broken
    GNU find's manual says \c in a -printf format stops printing right there. Here it only flushed the output, and the rest of the format was still printed.
    What I changed
    Printing now stops at \c. Later actions on the same file still run, as in GNU find.
    Why it matters
    Scripts that use \c to cut a line short get the same output as with GNU find.

    see the code, #910 (opens in a new tab)

  9. 23 Oct 2026

    Date filters accept any date the date command understands

    What was broken
    find's newer-than-a-date filters only took two fixed date layouts and read them as UTC. Common forms like yesterday, 1 day ago or an ISO date were rejected, and local times came out hours off.
    What I changed
    find now reads these dates with the same parser the date and touch commands use, in local time.
    Why it matters
    Date searches that work with GNU find work here too, and land on the right hour.

    see the code, #915 (opens in a new tab)

  10. 22 Oct 2026

    Date filters now need a file to be strictly newer

    What was broken
    Asking find for files newer than a date also matched files with exactly that time, and dates before 1970 lost their minus sign, so a file from 1960 counted as newer than 1965.
    What I changed
    A file now has to be strictly newer than the date, and times before 1970 compare the right way round.
    Why it matters
    Searches by date return the same files GNU find does.

    see the code, #914 (opens in a new tab)

← every project