重命名拆分产生的文件

rename files which produced by split

我拆分了这个巨大的文件,输出了几个以 x 字符开头的文件。

我想重命名它们并制作一个按名称排序的列表,如下所示:

部分-1.gz

部分-2.gz

部分-3.gz ...

我在 CMD 下试过:

for (( i = 1; i <= 3; i++ )) ;do for f in `ls -l | awk '{print }' | grep '^x'`; do mv $f part-$i.gz ;done ; done;

for f in `ls -l | awk '{print }' | grep '^x'`; do for i in 1 .. 3 ; do mv -- "$f" "${part-$i}.gz" ;done ; done;

for i in 1 .. 3 ;do for f in `ls -l | awk '{print }' | grep '^x'`; do mv -- "$f" "${part-$i}.gz" ;done ; done;

for f in `ls -l | awk '{print }' | grep '^x'`; do mv -- "$f" "${f%}.gz" ;done

提示:如果您只需要文件名,请不要执行 ls -l。更好的是,根本不要使用 ls,只需使用 shell 的通配能力。 x* 扩展为所有以 x.

开头的文件名

这是一种方法:

i=1; for f in x*; do mv $f $(printf 'part-%d.gz' $i); ((i++)); done

这会将i初始化为1,然后循环遍历所有以x开头的文件名按字母顺序排列,依次将每个文件名赋值给变量f。在循环内部,它将 $f 重命名为 $(printf 'part-%d.gz' $i),其中 printf 命令将 %d 替换为 i 的当前值。如果您需要在数字前加上零,您可能需要 %02d 之类的东西。最后,仍然在循环内,它递增 i 以便下一个文件接收下一个数字。

请注意,如果输入文件名包含空格,其中的 none 是安全的,但您的文件名不包含空格。