重命名拆分产生的文件
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 是安全的,但您的文件名不包含空格。
我拆分了这个巨大的文件,输出了几个以 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 是安全的,但您的文件名不包含空格。