Linux 无法循环浏览所有文件夹
我在一个有很多子文件夹和文件的文件夹中循环。我只想在进入内部文件夹(子文件夹)时执行命令。但当我运行shell脚本时,它只对第一个文件夹执行命令。它不会循环到其余文件夹 这是我的命令Linux 无法循环浏览所有文件夹,linux,bash,shell,libreoffice,Linux,Bash,Shell,Libreoffice,我在一个有很多子文件夹和文件的文件夹中循环。我只想在进入内部文件夹(子文件夹)时执行命令。但当我运行shell脚本时,它只对第一个文件夹执行命令。它不会循环到其余文件夹 这是我的命令 for f in /home/SUPPORTINGDOCS_BK/SUPPORTINGDOCS_BATCH2/*; do [ -d $f ] && cd "$f" && exec libreoffice --headless --convert-to odt *.docx don
for f in /home/SUPPORTINGDOCS_BK/SUPPORTINGDOCS_BATCH2/*;
do
[ -d $f ] && cd "$f" && exec libreoffice --headless --convert-to odt *.docx
done
exit;
如果我的shell脚本中有错误,请告诉我。您将
cd
放入文件夹,但决不能cd
返回
或者,添加
cd -
在完成之前
,或者更好,将全身循环括在括号内:
( [ -d $f ] && \
cd "$f" && \
exec libreoffice --headless --convert-to odt *.docx
)
它将在子shell中运行,因此
cd
不会影响主shell的当前工作目录。您可以使用find:
find /path/to/search -type d -exec libreoffice --headless --convert-to odt {}/*.docx \;
exec参数将允许您对搜索定义找到的对象执行命令;字符串{}表示找到的对象,在本例中是您要查找的目录。感谢@Vogel612提供有关添加详细解释的建议