2017-10-08 128 views
0

我想要一个能够读取包含文件夹名称的文本文件内容并将文件夹从其目录移动到特定文件夹的脚本。这里是我的脚本:通过从文本文件读取文件名从目录中移动文件

 #!/bin/bash 
    for i in $(cat /folder/collected/folders.txt) 
     do 
     mv /fromfilelocation/$i /folder/Collected/ 
     done 

此脚本一部分工作,因为它仅复制文本文件中的最后一个文件夹,至于其他的文件夹,它给出了错误“不可能的:数据或目录未找到”但文件夹在那里,并根据错误文件夹目录被正确显示。 这些名称没有特殊字符或空格,并且如果文本文件中包含完整目录或只包含文件夹名称,则它们是相同的错误。 显示的错误是找不到文件或目录,但它显示正确的目录到$'\ r'文件夹。示例/ fromfilelocation/foldername'$'\ r。

+0

只要您打算在此处使用绝对路径,您的代码就可以用于我。和'/文件夹/收集/'相同'/文件夹/收集/'?大/小写? – Klaus

+0

确保文件名没有空格,如果他们确实把它放在脚本的第一行'IFS = $'\ n'' –

+0

'folders.txt'有窗口行尾。您需要从文本文件中删除'\ r'字符。不要使用for循环从文件中读取 - http://mywiki.wooledge.org/DontReadLinesWithFor – fd0

回答

0

这是由于换行字符造成的错误。在具有目录名称的文件上执行dos2unix,然后再次运行脚本。脚本没有错

+0

谢谢我使用dos2unix转换了文本文件并进行了测试脚本和它的工作。 – mido