重定向输出没有这样的文件或目录

时间:2017-05-03 11:27:40

标签: bash shell

我正在尝试启动一个脚本来回显(作为测试)不同目录中的文件的文件名,但得到"没有这样的文件或目录"错误。看起来它将我回复的整个目录附加到我尝试重定向到的文件名但是如何解决这个问题。谢谢。

for filename in /data/logs/2017/jan/201701*
do
echo $filename > /home/bishopm/${filename%.gz}
done

为每个尝试回显的文件获取以下错误:

./data_collector.sh: line 5: /home/bishopm//data/logs/2017/jan/20170131: No such file or directory

3 个答案:

答案 0 :(得分:0)

你实际上需要告诉sh你要遍历该目录中的文件列表,所以你调用ls命令

for filename in $(ls /data/logs/2017/jan/201701*);
do
file=$(basename $filename)
echo $file > /home/bishopm/${file%.gz}
done

编辑:现在它应该可以工作,只要bishopm目录存在 Edit2:用rev | cut | rev替换basename链,感谢Sild

答案 1 :(得分:0)

您的路径中有2 //home/bishopm//...。尝试:

...
echo $filename > "/home/bishopm${filename%.gz}"
...

答案 2 :(得分:0)

更优雅的POSIX解决方案:

for filpath in /data/logs/2017/jan/201701*; do
    filename="$(basename "${filepath}")"
    echo "${filename}" > /home/bishopm/${filename%.gz}
done