Мне нужно пакетно преобразовать несколько файлов docx в файлы txt и поместить их в пользовательский каталог с помощью textutil.
Кажется, я могу сделать это с одним файлом, но не с несколькими файлами. Если я установлю путь -output
при преобразовании нескольких файлов, он преобразует только первый файл.
Я понимаю, что могу просто переместить файлы после конвертации, но если бы это было возможно, это сэкономило бы время в будущем.
textutil -convert txt /Users/evanjohn/Desktop/docs/original/*.docx -output /Users/evanjohnmeredith-davies/Desktop/docs/converted/*.txt
Прежде чем 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
, на пустую строку.