電子メールファイル名を.txtから.emlに繰り返し変更します。

電子メールファイル名を.txtから.emlに繰り返し変更します。

"$d"ディレクトリには、.txt拡張子を持つ何千もの電子メールファイルが含まれています。電子メールクライアントで開くには、名前を.emlに変更する必要があります。

このコマンドは名前を正しく変更しますか?

find "${d}" -type f -name '*.txt' | while read f; do mv -vn "${f}" "${f%.*}".eml; done

それともこれを行うより良いより強力な方法がありますか?

私はエレガントな使い方を考えることはできません。

-exec ...{}... \;

ベストアンサー1

あなたの解決策は通常大丈夫ですが、改行のために中断されます。以下は少し強力なbash4+ソリューションです。

shopt -s globstar nullglob
for file in **/*.txt; do
    mv "$file" "${file%.*}.eml"
done

おすすめ記事