2015-06-20 92 views

回答

0
for original_name in *.data; do 
    # determine new file name from original: 
    # remove zeroes and change extension. 
    new_name=$(echo "$original_name" | sed -e 's/_0*/_/g' -e s'/.data$/.png/') 
    mv "$original_name" "$new_name" 
done 
+0

很好的解决方案,但我西港岛线需要这个像 循环'到* _ * _ * _ *文件。数据 做 MV“$ {文件} “”$ {file/.data/.png}“ done ' –

+0

好的,我编辑了我的答案来循环多个文件。希望有所帮助。 –

+0

感谢这项工作 –

1

使用此

ls * | sed -e 'p;s/_0*/_/g' | xargs -n2 mv 
+0

注意,它会遍历当前目录中的所有文件,并删除其名称中的零 –

+0

它返回错误 -sh:/ bin/ls:参数列表太长 –

+0

这不被鼓励。在处理文件名时,'ls'是一个不好的工具。正确的方法是'*'或'find。 -print0 | xargs -0'或'find。 -exec'模式。 – HuStmpHrrr