使用lyp输出中的grep和sed批量重命名

时间:2015-05-02 06:46:12

标签: rename batch-processing batch-rename

我想使用lynx Web浏览器输出批量重命名一些文件。我尝试过使用很多变化,但实际上没有任何变化。

我希望将每个文件中的一行用于文件名。

这基本上就是我的尝试:

for i in *.html ; do mv "$i" "$(lynx -dump -nolist -width=200 "$i" | grep --color=never '[0-9] - [0-9]' | head -n 1 | sed -e 's/^[ \t]*//' -e "s/'/'\\\\''/g; 1s/^/'/" | cut -c3-)" ; done

这是结果:

mv: cannot move 'old_file.html' to 'new_file.html': No such file or directory

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

这就是为什么它不起作用。该字符串包含/。 我补充说:     tr '/' '\\'\更改为/。 问题解决了。

以下是整个代码:

for i in *.html ; do mv $i "$(lynx -dump -nolist -nonumbers -width=200 $i | grep --color=never '[0-9] - [0-9]' | head -n 1 | tr -s ' ' | tr '/' '\\' | cut -c3- | sed 's/$/.html/')" ; done

文件最初的名称如下:     357012.html并重命名为:01\01\01 - Linux forum, guide to bash scripting.html等。