更改文件的名称。解释搜索替换

时间:2017-01-24 14:38:22

标签: bash shell terminal

更改文件名称

我想了解如何使用终端和Mac更改文件名。 我一直在寻找,我找到了很多解决方案。例如这里: Using sed to mass rename files

这会将文件从F00001-070更改为F000-070

for file in *.txt; do echo mv -v "$file" "${file/#F0000/F000}"; done

我已经过测试,效果很好。但现在我试着改变它 来自old-file.txt
new-file.txt

for file in *.txt; do echo mv -v "$file" "${file/#old/new}”; done

最后一个不起作用。

我认为file/#F0000/F000意味着从F0000到F000的更改文件。我一定是错的?

有人可以解释代码并应用于如何在开头,结尾或中间更改文件名称的一部分

2 个答案:

答案 0 :(得分:1)

你的结束语是错误的,Unicode右引用而不是ASCII直引号:

# bad
for file in *.txt; do echo mv -v "$file" "${file/#old/new}”; done
                                                          ^
# good
for file in *.txt; do echo mv -v "$file" "${file/#old/new}"; done
                                                          ^

答案 1 :(得分:0)

for file in *.txt; do echo mv -v "$file" "${file/old/new}”; done

#mean 直到,其中一个%表示之后在正则表达式中的行为,所以删除你的#

# var=old-file.txt;echo ${var/%file*/new}
old-new
# var=old-file.txt;echo ${var/#*file/new}
new.txt

%%和##表示最长的表达式,其中#和%表示第一次出现