Find and replace filename recursively in a directory

前端 未结 14 2001
野趣味
野趣味 2020-11-28 21:24

I want to rename all the files in a folder which starts with 123_xxx.txt to xxx.txt.

For example, my directory has:

123_xxx         


        
14条回答
  •  借酒劲吻你
    2020-11-28 22:02

    Do it this way:

    find . -name '123*.txt' -type f -exec bash -c 'mv "$1" "${1/\/123_//}"' -- {} \;
    

    Advantages:

    • No pipes, no reads, no chance of breaking on malformed filenames.
    • Only one non-standard tool or feature: bash.

提交回复
热议问题