Shell脚本从txt文件中查找和复制

时间:2017-09-12 01:14:08

标签: macos shell sh

我想从文本文件中逐行读取以递归方式查找目标文件夹中的文件。如果发现将该文件复制到另一个目录。从终端运行sh script.sh时,下面的脚本会执行但不执行查找或复制。没有错误显示,它将为每个循环迭代正确回显$line变量字符串。使用实际文件名而不是find变量从终端运行相同的$list会成功完成任务。

脚本:

script.sh
#!/bin/bash
file="filenames.txt"
while IFS= read line
do
find /Volumes/share/all-files-location -name "$line" -print -exec cp {} /Volumes/share/found-files-location \;
done < "$file"

文件名列表,纯文本:

A1037_MG_1262.jpg
A1037_MG_12621.jpg
A1037_MG_1263.jpg
[11,000 more entries]

思想?

1 个答案:

答案 0 :(得分:0)

由于输入文件是在CRLF中,并且Unix通常使用LF作为其行尾,因此bash脚本通过LF字符的出现对行进行排序,因此每个文件名都附加了\r结束了。由于您的磁盘可能不包含包含\r的文件名,因此find工具找不到任何文件,结果是您的工具似乎失败并且没有给出错误消息。

解决方案:将文件的行结束格式切换为LF。

相关问题