我检查文件夹中是否有某种类型的文件来小写扩展名,然后以这种方式提取内容:
existDoc=""$(ls | grep .DOC | wc -l)
if [ $existDoc -gt 0 ]; then
for file in *.DOC
do
mv $file $(basename "$file" .DOC)".doc"
done
fi
Run Code Online (Sandbox Code Playgroud)
然后转换
for word in *.doc
do
text_doc=""$(basename "$word" .doc)
sudo catdoc $word > $text_doc".txt"
done
Run Code Online (Sandbox Code Playgroud)
问题是在没有明显原因的情况下创建了一个名为“*.doc.txt”的新空文件。
一些事情:
如果我理解正确,您希望将所有*.DOC
文件名的扩展名小写并用于catdoc
创建它们的文本文件。
shopt -s nullglob
for doc in ./*.DOC; do
new_doc="${doc%.DOC}.doc"
txt_doc="${doc%.DOC}.txt"
catdoc "$doc" >"$txt_doc"
mv "$doc" "$new_doc"
done
Run Code Online (Sandbox Code Playgroud)
或者更短:
shopt -s nullglob
for doc in ./*.DOC; do
catdoc "$doc" >"${doc%.DOC}.txt"
mv "$doc" "${doc%.DOC}.doc"
done
Run Code Online (Sandbox Code Playgroud)
${doc%.DOC}
使用${parameter%word}
的参数扩展bash
(或任何POSIX壳),以除去.DOC
来自于文件名的后缀$doc
。nullglob
shell 选项将确保没有任何匹配。如果没有设置,我会得到的字符串中,如果没有文件。*.DOC
.DOC
*.DOC
$doc
.DOC
./
前缀 in./*.DOC
可以避免文件名以-
.