Evan Meredith-Davies
Evan Meredith-Davies

Reputation: 328

Output multiple converted files to custom directory using textutil

I need to batch convert multiple docx files to txt files and place them in a custom directory using textutil.

It seems I can do this with a single file, but not with multiple files. If I set an -output path while converting multiple files, it will only convert the first file.

I realise I could just move the files after the conversion, but it would save time in the future if this were possible.

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

Upvotes: 1

Views: 483

Answers (1)

Benjamin W.
Benjamin W.

Reputation: 52132

Before textutil gets to do anything, the shell expands the globs; because converted/*.txt doesn't match anything, it'll expand to just itself1, creating a file called *.txt, which isn't what you want.

Since there doesn't seem to be an option to specifiy multiple output filenames, you probably have to loop over the files one by one:

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

This extracts the filename first and then uses parameter expansion to get the desired paths.


1Or, if the nullglob shell option is set, to the empty string.

Upvotes: 1

Related Questions