find /$HOME/Desktop -name "*.dpx" -exec sed -i "" 's/Exile1/ExileR1/' {} \;
只是挂起而没有结果。我不清楚问题可能是什么。
Buuuut,
find /$HOME/Desktop -name "*.dpx" -exec rename 's/Exile1/ExileR1/' {} \;
工作正常。
为什么????
我在MacOSX上。
答案 0 :(得分:0)
鉴于您将失败的sed
命令与rename
对比,看起来您正在尝试重命名文件,而sed
命令将在您传递的文件的内容中执行字符串替换 ;然后-i
选项将修改后的输入写回输入文件(松散地说)。
sed
无法直接重命名文件,但您可以将其用作辅助命令来构建新文件名,然后传递给mv
:
find "$HOME/Desktop" -name "*.dpx" -print0 |
while IFS= read -d '' -r file; do
echo mv "$file"' "$(sed 's/Exile1/ExileR1/' <<<"$file")"
done
删除echo
以执行实际重命名。
答案 1 :(得分:-1)
我没有任何.dpx文件,但尝试添加-e来澄清搜索脚本。像这样......
find /$HOME/Desktop -name "*.dpx" -exec sed -i "" -e 's/Exile1/ExileR1/' {} \;