Bash - 读取文本文件,删除连字符然后复制文件

时间:2017-01-23 15:15:37

标签: bash cp hyphen

我有一个Web服务器,它生成GUID作为存储在web目录中的jpgs的文件名。 GUID的一部分包含连字符,例如:

34bc9ead-f8f0-467d-8605-df77f392da07.jpg

然后它生成一个存储在服务器上的文本文件,其中包含列表中的所有jpgs,看起来像这样

www.awebsite.com/img/34bc9ead-f8f0-467d-8605-df77f392da07.jpg

在raspberry客户端上,我运行wget来获取这个txt文件和图像。然后我需要将这些图像复制到另一个驱动器。

如果我运行bash来读取文本文件,请删除完整的URL,使其只有文件名,然后使用CP复制文件,它会产生一个奇怪的错误,说它无法复制文件“34bc9ead-f8f0-467d-8605 -df77f392da07.jpg / R”。请注意,文件的末尾似乎附加了“/ r”

对于编码而言,我只是一个新手,如果我的方法没有得到优化,或者如果我完全错误的话,那么道歉。

while read -r p; do
[[ "$p" == */* ]] || p="./$p"
b="${p##*/}"
cp $b /newdirectory/$b
done < wget_filelist.txt
sleep 5
done;

添加我不能使用wget将文件下载到目标目录。我使用wget将它放在一个目录中,然后将图像复制到ram-disk以读取另一个作业。

我想过从文件名中删除连字符,我可以成功地做到但是会让我头疼到别处想要实现的目标。它似乎只是读取一个文本文件并将其传递给cp导致这个奇怪的“/ r”出现。

非常感谢您的任何帮助

1 个答案:

答案 0 :(得分:3)

您的文件text="{{flavour}}" draw-text存在wget_filelist.txt样式DOS结尾,请通过

删除它
CRLF(\r)

并运行原始的dos2unix wget_filelist.txt 脚本。