从文本文件中读取文件名然后制作这些文件?

时间:2013-08-07 20:13:52

标签: linux bash unix

我的代码如下。 Echo工作得很好。但是,当我将echo的输出重定向到touch时,我得到一个错误“没有这样的文件或目录”。为什么?我如何解决它 ? 如果我复制只粘贴echo的输出,则创建文件,但不创建触摸。

while read line           
do           
    #touch < echo -e "$correctFilePathAndName"
    echo -e "$correctFilePathAndName"           
done < $file.txt

4 个答案:

答案 0 :(得分:8)

如果输入文件file.txt的每一行都有文件名,则不需要进行任何循环。你可以这样做:

touch $(<file.txt)

在一个触摸命令中创建所有文件。

答案 1 :(得分:4)

您需要提供文件名作为参数,而不是通过标准输入。您可以通过$(…)或`...`:

使用command substitution
while read line
do
    touch "$(echo -e "$correctFilePathAndName")"
done < $file.txt

答案 2 :(得分:3)

嗯,丢失回声部分......并使用正确的变量名称。

while read line; do
    touch "$line"
done < $file.txt

答案 3 :(得分:1)

尝试:

echo -e "$correctFilePathAndName" | touch

编辑:抱歉正确的管道是:

echo -e "$correctFilePathAndName" | xargs touch

'&lt;'通过stdin重定向,而touch需要文件名作为参数。 xargs将stdin转换为触摸参数。