Search code examples
renamentfsfilenamesext3fat32

Command to truncate all filenames at 255 characters


An NTFS directory is open in a bash shell. what command will recursively truncate all filenames in a directory to the 255 character limit required for ext3?


Solution

  • If you have access to a Windows shell, you can use:

    @echo off
    setlocal EnableDelayedExpansion
    
    REM  loop over all files in the cwd
    for /f %%a in ('dir /a-d /b') do (
       REM  store this filename in a variable so we can do substringing
       set ThisFileName=%%a
       REM  now take a substring
       set ThisShortFileName=!ThisFileName:~0,255!
       REM  finally, the rename:
       echo ren %%a !ThisShortFileName!
    )
    
    
    :EOF
    endlocal
    

    (Note: I have added an echo before the rename command just so you can visually verify that it works before actually running it. Works on my box.)

    I'm sure somebody who's on a *nix box right now could make a similar script for bash, but I'm stuck in Windows world :)

    Good luck!