Pab*_*blo 1 macos bash command-line
在 OSX 10.8 上,如何通过从名称中删除一定数量的字符来重命名当前目录中的所有文件?例子:
my_img_1@2x.png to become my_img_1.png
Run Code Online (Sandbox Code Playgroud)
所以只有@2x部分会被删除。
执行此操作的确切方法取决于您的文件 - 例如,它们都是 PNG 文件吗?您想将@2x其全部删除吗?下面是一个循环,它将从当前目录中的所有文件中删除文件扩展名之前的 3 个字符:
for f in *; do
echo mv "$f" $(sed -r 's/(.*).{3}\.([^\.]+)/\1.\2/' <<< "$f")
done
Run Code Online (Sandbox Code Playgroud)
如果您的所有文件都已命名[something]@2x.png并且您希望将它们重命名[something].png,则可以使用以下方法:
for f in *; do
echo mv "$f" "${f%@*}.png"
done
Run Code Online (Sandbox Code Playgroud)
这可以使用参数扩展来实现- 实际上,该构造${var%pattern}意味着“$var从其末尾获取并删除与 [pattern] 匹配的最短字符串”。所以在这种情况下,${f%@*}意味着“从”中删除最后一个@和其后的所有内容$f。然后我们追加.png以替换在该操作中已删除的文件扩展名。
$f = filename@2x.png
${f%@*} = filename
${f%@*}.png = filename.png
Run Code Online (Sandbox Code Playgroud)