【发布时间】: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