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