У меня есть папка с именем X, внутри которой есть много папок и подпапок. Я хочу искать во всех папках внутри X и найти определенный тип документа. Например, xlsx и преобразовать каждый файл в файл xls. В этом случае мне нужно использовать опцию libreoffice convert, например libreoffice --headless --convert-to xls, но вот улов. После преобразования каждый преобразованный файл должен находиться в той же папке, что и исходный файл xlsx.
Пример:
X/
Folder 1/
Folder 2/
Folder 2.1/file.xlsx
Folder 3/
Folder 4/
Folder 4.1/anotherFile.xlsx
После преобразования:
X/
Folder 1/
Folder 2/
Folder 2.1/file.xls
Folder 2.1/file.xlsx
Folder 3/
Folder 4/
Folder 4.1/anotherFile.xls
Folder 4.1/anotherFile.xlsx
новый xls * в этом случае будет преобразован в ту же папку, что и исходный xlsx . Это будет сделано во всех подпапках и во всех найденных xlsx.
Это работает для меня:
cd X
find ./ -iname "*.xlsx" > /tmp/out
SAVEIFS=$IFS; IFS=$(echo -en "\n\b"); while read line ; do cd $(dirname $line); libreoffice --headless --convert-to xls $(basename $line); echo $PWD; cd -; done < /tmp/out; IFS=$SAVEIFS