【问题标题】:Batch rename using grep and sed from lynx output使用 grep 和 sed 从 lynx 输出批量重命名
【发布时间】:2015-07-12 00:30:27
【问题描述】:

我想使用 lynx 网络浏览器输出批量重命名一些文件。我尝试了许多变体,但没有任何实际效果。

每个文件中都有一行我想用作文件名。

这基本上是我正在尝试的:

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

非常感谢任何帮助!

【问题讨论】:

  • 如果您添加了对您想要实现的目标的解释,而不仅仅是转储非工作命令,这将非常有帮助。
  • 文件名不代表实际内容,需要重命名。我使用Lynx 格式化每个文件,然后grep 检索相关信息,例如日期、论坛名称等。最终结果将是新文件名。该脚本实际上正确显示了目标名称,只是当我尝试重命名文件时它不起作用。

标签: rename batch-processing batch-rename


【解决方案1】:

这就是它不起作用的原因。该字符串包含/。 我补充说: 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

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 2021-03-29
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2011-01-17
    • 2020-10-08
    • 1970-01-01
    • 2012-10-09
    相关资源
    最近更新 更多