Преобразование нескольких файлов документов в их текущие папки

У меня есть папка с именем 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.

1
задан 15 May 2014 в 01:39

1 ответ

Это работает для меня:

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
2
ответ дан 24 May 2018 в 07:45
  • 1
    Для меня была игра с IFS. Спасибо за отличный вопрос! :) – Nehal J Wani 15 May 2014 в 21:32

Другие вопросы по тегам:

Похожие вопросы: