通过删除最后n个字符重命名文件

aft*_*ath 9 unix shell

我想通过删除最后N个字符来重命名文件

例如,我想通过删除最后7个字符来重命名这些文件

从:

file.txt.123456
Run Code Online (Sandbox Code Playgroud)

至:

file.txt
Run Code Online (Sandbox Code Playgroud)

这可以在一个命令中执行吗?

che*_*ner 11

您可以使用删除固定数量的字符

mv "$file" "${file%???????}"  # 7 question marks to match 7 characters
Run Code Online (Sandbox Code Playgroud)

这适用于任何符合POSIX标准的shell.

要删除最后一个扩展名(可能多于或少于7个字符),请使用

mv "$file" "${file%.*}"
Run Code Online (Sandbox Code Playgroud)

要在给定扩展名后修剪所有内容,您可以尝试

EXT=csv
mv "$file" "${file%.$EXT.*}".$EXT
Run Code Online (Sandbox Code Playgroud)

实际上删除了.$EXT所有内容,然后重新附加.$EXT.


Ada*_*iss 6

你在用bash吗?

file="file.txt.123456"
mv $file ${file::(-7)}
Run Code Online (Sandbox Code Playgroud)