Вывод нескольких преобразованных файлов в пользовательский каталог с помощью textutil

#macos #shell #terminal #textutils

#macos #оболочка #терминал #текстовые файлы

Вопрос:

Мне нужно пакетно преобразовать несколько файлов docx в файлы txt и поместить их в пользовательский каталог с помощью textutil.

Кажется, я могу сделать это с одним файлом, но не с несколькими файлами. Если я задам -output путь при конвертации нескольких файлов, будет преобразован только первый файл.

Я понимаю, что мог бы просто переместить файлы после преобразования, но это сэкономило бы время в будущем, если бы это было возможно.

 textutil -convert txt /Users/evanjohn/Desktop/docs/original/*.docx -output /Users/evanjohnmeredith-davies/Desktop/docs/converted/*.txt
  

Ответ №1:

Прежде textutil чем что-либо сделать, оболочка расширяет глобусы; поскольку converted/*.txt ничему не соответствует, она расширится до1, создав файл с именем *.txt , который вам не нужен.

Поскольку, похоже, нет возможности указать несколько выходных имен файлов, вам, вероятно, придется перебирать файлы один за другим:

 for fpath in /Users/evanjohn/Desktop/docs/original/*.docx; do
    fname=${fpath##*/}
    textutil -convert txt "$fpath" -output "${fpath%/*}/converted/${fname%.docx}.txt"
done
  

Сначала извлекается имя файла, а затем используется расширение параметра для получения желаемых путей.


1Или, если nullglob установлен параметр командной строки, в пустую строку.