使用bash
参数扩展:
for i in ?????????????*; do echo mv -i "$i" "${i%????????????}"; done
Run Code Online (Sandbox Code Playgroud)
删除echo
以进行实际操作。检查多个源文件的相同输出文件名。
您也可以使用参数扩展替换模式:
for i in ?????????????*; do echo mv -i "$i" "${i/????????????}"; done
Run Code Online (Sandbox Code Playgroud)
使用rename
( prename
),从该目录:
rename -n 's/.{12}$//' *
Run Code Online (Sandbox Code Playgroud)
如果您只想对文件执行此操作,这将重命名所有文件和目录:
find . -maxdepth 1 -type f -name '?????????????*' -exec rename -n 's/.{12}$//' {} +
Run Code Online (Sandbox Code Playgroud)
这将进行空运行,删除-n
以进行实际操作:
find . -maxdepth 1 -type f -name '?????????????*' -exec rename 's/.{12}$//' {} +
Run Code Online (Sandbox Code Playgroud)
同样,这可能会导致竞争条件,请确保仔细检查干运行的输出。
你可以使用rename
. 检查是否已安装:
sudo apt install rename
Run Code Online (Sandbox Code Playgroud)
从目录内部运行:
rename -n 's/(.*).{12}/$1/' *
Run Code Online (Sandbox Code Playgroud)
测试后删除-n
以实际重命名文件。{12}
用。。。来代替{whatever number of characters you want to delete from the end of the name}
。
s/old/new/' replace
旧的with
新的`(.*)
保存任意数量的任意字符....{12}
最后十二个字符,无论它们是什么$1
保存的字符()