次のように、「rename」コマンドを使用して、不足している文字を現在のディレクトリ内のすべてのファイル名に追加できます。
echo "Renaming files..."
rename -v "s/^abcd124(.+)/abcd1234$1/" *.wav.gz;
echo "Done."
ただし、現在のディレクトリとそのすべてのサブディレクトリに対してこれを行いたいと思います。私はこれを試しました:
echo "Renaming files..."
for dir in $(find ./ -type d); do
rename -v "s/^$dir\/abcd124(.+)/$dir\/abcd1234$1/" *.wav.gz;
done;
echo "Done."
ただし、$dir
変数にこれらの特殊文字のいずれかが含まれている場合、{}[]()^$.|*+?\
それらは \ で適切にエスケープされず、スクリプトが失敗します。
この問題を解決する最善の方法は何でしょうか? また、この問題を解決するために何を使用すると思いますawk
か (利点/欠点?)