"$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