sed挂着没有结果但重命名工作

时间:2017-01-24 00:13:23

标签: macos sed rename

find /$HOME/Desktop -name "*.dpx" -exec sed -i "" 's/Exile1/ExileR1/' {} \;

只是挂起而没有结果。我不清楚问题可能是什么。

Buuuut,

find /$HOME/Desktop -name "*.dpx" -exec rename 's/Exile1/ExileR1/' {} \;

工作正常。

为什么????

我在MacOSX上。

2 个答案:

答案 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/' {} \;