Bash:打开另一个文件中列出的名称的文件

  • 本文关键字:文件 另一个 Bash linux bash
  • 更新时间 :
  • 英文 :


>我有一个文件,其中包含稍后要打开的文件名列表。将行(文件名)加载到变量后,由于我不知道的原因,我以后无法将其作为文件打开。

这是我正在尝试执行的操作的简化示例:

主文件内容:

first_file.txt
second_file.txt

Bash 命令:

read line < $main_file   # file with the list, received as an argument
echo $line               # to check that correct filename has been read
cat $line                # attempt to dump "first_file.txt" contents <- FAILS
cat first_file.txt       # read "first_file.txt" contents manually 

执行方法:

first_file.txt
: No such file or directory
*** this is 1st file's contents ***
*** ....

所以,cat first_file.txt工作,$line包含"first_file.txt",但cat $line失败......

我显然误解了这里的东西,欢迎提出建议!

编辑:根据要求,以下是cat -v $main_file的输出:

first_file.txt^M
second_file.txt^M
third_file.txt^M
^M
^M

^M字符是回车符(又名 r),并且通常是 Windows 行结尾的一部分。 当您echo它们时,它们不会出现,但它们会破坏您打开文件的能力,其中包含末尾的文本。

最好的解决方案是从"主文件"中删除它们。 如果你有的话,你可以使用dos2unix工具,或者你可以像sed -i -e 's/s+$//g' $main_file一样使用 GNU sed 来编辑它,并从每行末尾删除多余的空格(包括^M)。

相关内容

  • 没有找到相关文章

最新更新