我想使用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
非常感谢任何帮助!
答案 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
等。