【发布时间】:2016-05-19 14:19:25
【问题描述】:
假设我有名为 "*.data.done" 的文件。现在我想将它们(递归地)重命名为“*.data”,然后是包含"pattern"
所以我们开始:
grep -l -R -F "pattern" --include '*.data.done' * | xargs -I{} mv {} ${{}::-5}
好吧,这种“.done”的剥离不起作用(bash 4.3.11):
bash: ${{}::-5}: bad substitution
我怎样才能做到这一点最简单的方法?
【问题讨论】:
-
我会在文件
moveit.sh中创建一个小脚本:for file in "$@"; do mv "$file" "${file%.done}"; done,然后使用xargs sh moveit.sh。这很简单,清理moveit.sh文件的开销并不大。 -
{}不是shell变量,不能对其进行shell参数扩展。
标签: bash substitution xargs string-substitution