使用以下命令,我的脚本成功完成。
for file in collectorlist* ; do mv "$file" "${/bak_/{file}}" ; done
现在我想将bak_ {file}移动到重置为原始文件名的{file}。我尝试了以下方式,抛出错误。,您的建议表示赞赏。
for file in bak_collectorlist*; do mv "$file" "${/bak_/{file}}" ; done
答案 0 :(得分:0)
使用:
for file in bak_collectorlist*; do mv "$file" "${file/bak_/}" ; done
来自 bash man :
${parameter/pattern/string
} 模式替换扩展模式以生成与路径名一样的模式 扩张。 参数展开和模式的最长匹配 对于,其值将替换为字符串。如果模式以/开头, 模式的所有匹配都用字符串替换。通常只有 第一场比赛被替换。如果模式以#开头,则必须匹配 在参数的扩展值的开头。如果模式 以%开头,它必须在扩展值的末尾匹配 参数。如果string为null,则删除pattern的匹配项 /可以省略以下图案。如果参数是@或*,则 替换操作应用于每个位置参数 转,扩展是结果列表。如果参数是 用@或*下标的数组变量,替换操作是 依次应用于数组的每个成员,并且扩展是 结果清单
<强>演示强>
$ ll bak_collectorlist*
-rw-r----- 1 klashxx klashxx 2 Jun 19 09:13 bak_collectorlist
-rw-r----- 1 klashxx klashxx 2 Jun 19 09:13 bak_collectorlist2
$
$ for file in bak_collectorlist*;do echo "$file" "${file/bak_/}" ; done
bak_collectorlist collectorlist
bak_collectorlist2 collectorlist
答案 1 :(得分:-1)
您需要将第二次运行中的文件名从bak反转为原始
for file in bak_collectorlist*; do mv "./bak_/${file}" "$file" ; done