#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
установлен параметр командной строки, в пустую строку.