使用bashshell重命名多个文件名

使用bashshell重命名多个文件名,bash,shell,Bash,Shell,我们有错误的文件名,比如file1@x2.png,应该是这样的file1@2x~ipad.png 我不确定这是不是我提出这个问题的合适地方。如何编写简单的bashshell脚本,将这样的文件名从错误转换为预期的文件名。mvfile1@x2.png file1@2x~ipad.png 您可以使用manmv获取帮助。mvfile1@x2.png file1@2x~ipad.png 您可以使用manmv获取帮助。使用bash,尽管这可以很容易地转换为sh/POSIX for file in *; do

我们有错误的文件名,比如file1@x2.png,应该是这样的file1@2x~ipad.png


我不确定这是不是我提出这个问题的合适地方。如何编写简单的bashshell脚本,将这样的文件名从错误转换为预期的文件名。

mvfile1@x2.png file1@2x~ipad.png

您可以使用
manmv
获取帮助。

mvfile1@x2.png file1@2x~ipad.png

您可以使用
manmv
获取帮助。

使用bash,尽管这可以很容易地转换为sh/POSIX

for file in *; do
    [[ "$file" =~ @2x~ipad\.png$ ]] || mv "$file" "${file%@*}@2x~ipad.png"
done

如果文件不仅仅是
png
s,那么使用这个(扩展名不可知),假设扩展名为3个字符

for file in *; do
    [[ "$file" =~ @2x~ipad\.[[:alpha:]]{3}$ ]] || mv "$file" "${file%@*}@2x~ipad.${file##*.}"
done

如果这些文件没有在某个目录下分组,则尝试在指定的根目录下递归查找它们

while read -r file; do
    [[ "$file" =~ @2x~ipad\.[[:alpha:]]{3}$ ]] || mv "$file" "${file%@*}@2x~ipad.${file##*.}"
done < <(find /path/to/root/dir/to/look/under -type -f -name "*.png")
读取-r文件时
;做
[[“$file”=~@2x~ipad\.[:alpha:]{3}$]| | mv“$file”${file%@*}@2x~ipad.${file}

使用bash完成,尽管可以很容易地转换为sh/POSIX

for file in *; do
    [[ "$file" =~ @2x~ipad\.png$ ]] || mv "$file" "${file%@*}@2x~ipad.png"
done

如果文件不仅仅是
png
s,那么使用这个(扩展名不可知),假设扩展名为3个字符

for file in *; do
    [[ "$file" =~ @2x~ipad\.[[:alpha:]]{3}$ ]] || mv "$file" "${file%@*}@2x~ipad.${file##*.}"
done

如果这些文件没有在某个目录下分组,则尝试在指定的根目录下递归查找它们

while read -r file; do
    [[ "$file" =~ @2x~ipad\.[[:alpha:]]{3}$ ]] || mv "$file" "${file%@*}@2x~ipad.${file##*.}"
done < <(find /path/to/root/dir/to/look/under -type -f -name "*.png")
读取-r文件时
;做
[[“$file”=~@2x~ipad\.[:alpha:]{3}$]| | mv“$file”${file%@*}@2x~ipad.${file}

完成<您不需要脚本;尝试
mmv

mmv "*.png" "#1~ipad.png"

你不需要剧本;尝试
mmv

mmv "*.png" "#1~ipad.png"

您可以使用
prename
(随
perl
提供)轻松地为大量文件执行此操作:

prename 's/x2\.png/2x~ipad.png/' *.png

您可以使用
prename
(随
perl
提供)轻松地为大量文件执行此操作:

prename 's/x2\.png/2x~ipad.png/' *.png

您是说如果扩展名之前没有包含
~ipad
,您需要重命名一组文件吗?可能是重复的。通过搜索
[shell]重命名文件
,还发现了3000多个其他问题。您是说如果扩展名之前没有该部分,您需要重命名一组文件以包含
~ipad
?可能重复。通过搜索
[shell]重命名文件
,还发现了3000多个其他问题。是的,可能有数百个。需要先找到它们,然后转换。所以位置不是固定的?那些文件没有归在某个目录下?是的,可能有几百个。需要先找到它们,然后转换。所以位置不是固定的?这些文件没有按某个目录分组?回答得好。他还希望将
x2
转换为
2x
,这样类似于
${file%x2.*}2x~ipad的东西。${file###*.}
将被重新要求。很好,问题中没有看到这一点。不过,应该清理文件表单。我不能一直猜;)回答得好。他还希望将
x2
转换为
2x
,这样类似于
${file%x2.*}2x~ipad的东西。${file###*.}
将被重新要求。很好,问题中没有看到这一点。不过,应该清理文件表单。我不能一直猜;)