Ubuntu 如何通过只保留12个字符来重命名多个文件

Ubuntu 如何通过只保留12个字符来重命名多个文件,ubuntu,Ubuntu,在我的Ubuntu18VM中有数千个文件具有相同数量的字符 我想通过只保留前12个字符来重命名所有这些文件 例如,我想在abcdefghijkl中重命名abcdefghijklmnop 我在*中尝试了此命令;执行mv“$i”“${i%| cut-c1-12}”;完成 但没有一个被重命名。终端说这些“是同一个文件” 我应该使用什么命令?试试这个: for i in *; do mv "$i" "$(echo $i | cut -c1-12)"; done

在我的Ubuntu18VM中有数千个文件具有相同数量的字符

我想通过只保留前12个字符来重命名所有这些文件

例如,我想在abcdefghijkl中重命名abcdefghijklmnop

我在*中尝试了此命令
;执行mv“$i”“${i%| cut-c1-12}”;完成

但没有一个被重命名。终端说这些“是同一个文件”

我应该使用什么命令?

试试这个:

for i in *; do mv "$i" "$(echo $i | cut -c1-12)"; done
我也不会依赖于
for
,而是使用
while
循环来读取整行,其中可能包含空格(而
for
会将这些空格分开并断开):


如果有一个名为abcdefghijkl1的文件和另一个名为abcdefghijkl2的文件,会发生什么?可以按循环读取我的文件的方式排序吗?第二个将覆盖第一个。您在问题中没有提到需要进行检查,只询问了如何重命名文件:)您可以合并检查文件是否已存在该名称,如果存在,您可以添加适当的内容,然后再次检查。。
ls * |while read i; do mv "$i" "$(echo $i | cut -c1-12)"; done