ファイルとフォルダーの名前を iconv で再帰的に変更しようとしましたが、成功しませんでした。ファイルの名前は正しく変更されましたが、フォルダーは変更されませんでした。
私がファイルに使用するのは(完璧に機能します):
find . -name * -depth \ -exec bash -c 'mv "$1" "${1%/*}/$(iconv -f UTF8 -t ASCII//TRANSLIT <<< ${1##*/})"' -- {} \;
ファイルとフォルダーに対して試したこと (失敗: フォルダーの名前のみを変更):
find . -exec bash -c 'mv "$1" "$(iconv -f UTF8 -t ASCII//TRANSLIT <<< $1)"' -- {} \;
元の問題:多くのファイルの名前を一括して「ウェブフレンドリー」にしたいだけで、スペースや奇妙な文字などを削除するように考えていますが、現在私は持っています
find . -name '*' -depth \
| while read f ;
do
mv -i "$f" "$(dirname "$f")/$(basename "$f"|tr -s ' ' _|tr -d "'"|tr -d ","|tr - _|tr "&" "y"|tr "@" "a")" ;
done
上記の tr と iconv を一度に実行する方法はありますか? 名前を変更するファイルが約 300,000 個あるので、できれば 2 回目の検索は避けたいと思います。
必要に応じて、Bash 4.2.24 を使用しています。
前もって感謝します。