如果有人问这个问题,我很抱歉,但我没有找到适合我的解决方案。
我写了一个小的bash脚本,它适用于普通文件夹。它应该为每个子文件夹运行一个命令。但是如果文件夹名称中有空格,则会出现问题。
如果有一个名为" New Folder"的文件夹在/ share / Download中,脚本将尝试访问文件夹" / share / Download / New" (而不是"新文件夹")
我也尝试过echo" $ d"
for d in `find /share/Download -mindepth 1 -type d`
do
echo
echo $d
curl http://localhost:2345/api/command -X POST -d '{"name": "something", "path": "'"$d"'"}' --header "X-Api-Key:123456789"
echo
done
答案 0 :(得分:2)
Shell在find
的输出上正在word splitting,这就是你遇到麻烦的原因。
使用流程替换来正确读取find
:
while read -r d; do
# your logic
done < <(find /share/Download -mindepth 1 -type d)
更好的是,make find
会释放NUL终止的输出,以便在其中包含换行符的目录也会被正确处理:
while read -r -d '' d; do
# your logic
done < <(find /share/Download -mindepth 1 -type d -print0)
这answer可以帮助您。
答案 1 :(得分:0)
经过更多的研究,我已经找到了问题和解决方案。
表示d in不是空白保存。
以下代码可以解决问题:
find /share/Download -mindepth 1 -type d|while read fname; do
curl http://localhost:1234/api/command -X POST -d '{"name": "something", "path": "'"$fname"'"}' --header "X-Api-Key:123456789"
done