【问题标题】:Move files in a for loop在 for 循环中移动文件
【发布时间】:2018-03-13 15:30:30
【问题描述】:

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

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

这个脚本部分工作,因为它只复制文本文件中的最后一个文件夹,至于其他文件夹它给出错误“不可能:找不到数据或目录”但是文件夹在那里,根据错误文件夹目录显示正确。

我应该怎么做才能让它正常工作??

【问题讨论】:

  • 文件folders.txt是包含完整路径还是相对路径?
  • 您的文件名中是否有空格或特殊字符?
  • 这里有一个行来测试“cat /folder/collected/folders.txt | while read each; do mv /fromfilelocation/$each /folder/Collected; done;”
  • @hovanessyan 它不起作用,它给出了同样的错误,它正确读取了 wolder 名称,但最后有 '$'\r'。例如 /fromfilelocation/foldername'$'\r'。并且 folder.txt 仅包含文件名,我也尝试使用完整路径它不起作用
  • @Thomas 没有空格或特殊字符

标签: linux bash for-loop move mv


【解决方案1】:

改用while循环

while read i; do
  mv fromfilelocation/"$i" /folder/Collected/
done </folder/collected/folders.txt

【讨论】:

  • 引用你的变量
  • @BhawandeepSingla 我按照你说的方式尝试了 while 循环,但它复制的是整个目录而不是其中的文件夹
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 2014-03-03
相关资源
最近更新 更多