无法遍历所有文件夹
Posted
技术标签:
【中文标题】无法遍历所有文件夹【英文标题】:Not able to Loop Through all folders 【发布时间】:2015-04-10 07:53:22 【问题描述】:我正在循环浏览一个包含许多子文件夹和文件的文件夹。我只想在进入内部文件夹(子文件夹)时执行命令。但是当我运行我的 shell 脚本时,它只对第一个文件夹执行命令。它不会循环到其余文件夹。
这是我的命令
for f in /home/SUPPORTINGDOCS_BK/SUPPORTINGDOCS_BATCH2/*;
do
[ -d $f ] && cd "$f" && exec libreoffice --headless --convert-to odt *.docx
done
exit;
如果我的 shell 脚本有错误,请告诉我。
【问题讨论】:
【参考方案1】:你 cd
到文件夹,但从来没有 cd
回来。
要么,添加
cd -
在done
之前,或者更好,将整个循环体括在括号中:
( [ -d $f ] && \
cd "$f" && \
exec libreoffice --headless --convert-to odt *.docx
)
它将在子shell中运行,因此cd
不会影响主shell的当前工作目录。
【讨论】:
【参考方案2】:您可以为此使用 find:
find /path/to/search -type d -exec libreoffice --headless --convert-to odt /*.docx \;
exec 参数将让您对搜索定义找到的对象执行命令;字符串 表示找到的对象,在本例中是您要查找的目录。
【讨论】:
感谢@Vogel612关于添加详细解释的建议以上是关于无法遍历所有文件夹的主要内容,如果未能解决你的问题,请参考以下文章