【问题标题】:Moves files from directory by reading file names from a text file通过从文本文件中读取文件名从目录中移动文件
【发布时间】:2018-03-19 18:06:23
【问题描述】:

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

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

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

【问题讨论】:

  • 您的代码适用于我,只要它打算在这里使用绝对路径。 '/folder/collected/' 和 '/folder/collected/' 一样吗?大写/小写?
  • 确保文件名没有空格,如果有,请将其放在脚本的第一行IFS=$'\n'
  • folders.txt 有 windows 行结尾。您需要从文本文件中删除 \r 字符。不要使用 for 循环从文件中读取 - mywiki.wooledge.org/DontReadLinesWithFor
  • @Klaus 在脚本中是正确的,这里只是一个错字

标签: linux bash shell ubuntu for-loop


【解决方案1】:

这是由于换行符导致的错误.. 对具有目录名称的文件执行 dos2unix 然后再次运行脚本。脚本没有错

【讨论】:

  • 谢谢我用dos2unix转换了文本文件并测试了脚本,它工作正常。
猜你喜欢
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
相关资源
最近更新 更多