小文字でファイルをテキストに変換すると、空の *.txt ファイルが表示されます。

小文字でファイルをテキストに変換すると、空の *.txt ファイルが表示されます。

フォルダ内に小文字の拡張子を持つ特定の種類のファイルがあることを確認したら、次のようにコンテンツを抽出します。

existDoc=""$(ls | grep .DOC | wc -l)

if [ $existDoc -gt 0 ]; then
    for file in *.DOC
    do
        mv $file $(basename "$file" .DOC)".doc"
    done
fi

それから変換

for word in *.doc
    do
        text_doc=""$(basename "$word" .doc)
        sudo catdoc $word > $text_doc".txt"
    done

問題は、明らかな理由がなく、「*.doc.txt」という名前の空のファイルが新しく作成されることです。

ベストアンサー1

いくつか:

私が正しく理解したら、すべてのファイル名とファイル名を作成するために使用されたテキストファイル*.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

またはより短く:

shopt -s nullglob
for doc in ./*.DOC; do
    catdoc "$doc" >"${doc%.DOC}.txt"
    mv "$doc" "${doc%.DOC}.doc"
done
  • 引数拡張(またはPOSIXシェル)を使用して、${doc%.DOC}.txtのファイル名からサフィックスを削除します。${parameter%word}bash.DOC$doc
  • シェルオプションを設定すると、サフィックス付きのファイルがなければnullglob何も一致しません。設定しない場合、ファイルが存在しない場合は文字列を取得します。*.DOC.DOC*.DOC$doc.DOC
  • で終わらないようにするには、./接頭辞inを使用してください。./*.DOC-

おすすめ記事