Linux: remove file extensions for multiple files

后端 未结 9 1930
甜味超标
甜味超标 2020-12-04 16:43

I have many files with .txt extension. How to remove .txt extension for multiple files in linux?

I found that

rename .old .new *.old
<
9条回答
  •  爱一瞬间的悲伤
    2020-12-04 17:05

    rename is slightly dangerous, since according to its manual page:

    rename will rename the specified files by replacing the first occurrence of...

    It will happily do the wrong thing with filenames like c.txt.parser.y.

    Here's a solution using find and bash:

    find -type f -name '*.txt' | while read f; do mv "$f" "${f%.txt}"; done
    

    Keep in mind that this will break if a filename contains a newline (rare, but not impossible).

    If you have GNU find, this is a more solid solution:

    find -type f -name '*.txt' -print0 | while read -d $'\0' f; do mv "$f" "${f%.txt}"; done
    

提交回复
热议问题