【问题标题】:Convert .html file to .txt using cp | error: cp: cannot stat '/*.html': No such file or directory使用 cp 将 .html 文件转换为 .txt |错误:cp:无法统计'/*.html':没有这样的文件或目录
【发布时间】:2018-07-05 19:51:38
【问题描述】:
#!/bin/bash
# Make a txt copy of any html files

for value in $1/*.html
do
        if [[ $value == *.html ]]; then
            cp $value $1/$( basename -s .html $value ).txt
        fi
done

错误: cp: cannot stat '/.html': 没有这样的文件或目录 cp: 无法访问'index.html/.txt': 不是目录

【问题讨论】:

  • 将文件名的一部分作为命令行参数传递
  • 我做到了,例如,我将整个文件名作为 ./convert_html_to_txt.sh index.html 传递并抛出错误
  • @ClaudioLopez,很明显的错误,为什么你在应该给出一个目录名的地方给出一个文件名,所以让我们举个例子,/index.html/a.html 不存在所以系统抱怨它不存在。我相信你想将一种 html 文件复制到另一个目录,如果是,然后确认一次。
  • @ClaudioLopez,您能否检查一下我的解决方案,如果这对您有帮助,请告诉我?
  • Convert .html file to .txt using cp 嗯? cp 不转换任何东西。您只是在谈论复制到具有不同扩展名的另一个文件吗?如果你想去除 html 标签,那么有一个实用程序 html2txt 做得很好(如果你使用它,请确保查看选项,例如 -utf8 等)

标签: linux bash


【解决方案1】:

下面语句中的$1是第一个命令行参数。

$1/*.html

在您的代码中,它需要包含 HTML 文件的父 目录名称。假设你的父目录是/home/user/my_html_files,那么如果你把它作为命令行参数传递,那么这个目录里面的所有HTML文件都会被考虑。

# ./convert_html_to_txt.sh /home/user/my_html_files

以上内容将在您的代码中生成/home/user/my_html_files/*.html。如果您的 HTML 文件在当前目录中,只需将 . 作为命令行参数传递(. 表示当前目录)

【讨论】:

  • 我相信问题不仅在于,用户在参数中提供了一个文件,并且对文件是否存在进行了错误检查(因为 for 循环仅通过 html 文件,所以我相信可以跳过此检查在这里)。
  • 可能是。只有OP可以澄清:=)
  • @hashbrown 你是对的。我只是将这个 for 循环复制到其他地方,并没有意识到在根据代码中的 if 语句检查任何文件之前调用了 $1 。谢谢!
【解决方案2】:

首先,您需要将目录名称(带有完整路径)传递给脚本,其次,因为您只循环遍历目录中的 HTML 文件,因此您无需再次检查它,而是可以在其副本上放置检查条件它是否成功复制为.txt。我相信您很可能正在寻找这种解决方案。

cat script.ksh
for value in $1/*.html
do
   temp=${value%.*}
   echo cp "$value" "$1/$temp.txt"
   if [[ $? -eq 0 ]]
   then
       echo "File named $value copied successfully to "$value" "$1/$temp.txt"
   else
       echo "Please check file named $value NOT copied to "$value" "$1/$temp.txt"
   fi
done

然后将script.ksh 运行为script.ksh "/directory_name/with_full_path"。我还把echo放在cp命令之前,所以一旦你看到上面的脚本打印的命令是正确的,你就可以删除它。

【讨论】:

    猜你喜欢
    • 2016-04-11
    • 1970-01-01
    • 2022-07-06
    • 2021-12-27
    • 2022-09-30
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多