トップページunix
5コメント1KB

ファイル名、ディレクトリ名の置換

■ このスレッドは過去ログ倉庫に格納されています
0001すえぞうNGNG
ファイル名やディレクトリ名で「~」を使われていて困ってます。
これを「-」に置換したいのですが、ディレクトリ名がうまくいきません。
bashにて下記のスクリプトでファイル名の置換は出来るのですが
ディレクトリ名の置換が出来ません。

for i in `find . -type f -a -name '*~*'`; do
mv $i $(echo $i|sed -e 's/~/-/g')
done

よろしくお願い致します
0002名無しさんNGNG
ディレクトリは -type d です。
0003通りすがりNGNG
2さんの言うとおりディレクトリは-type dですが、この場合は
-type fが悪いですね。-type fをとれば目的は達成できるはず
0004すえぞうNGNG
1階層だけは出来るようになりましたが、再帰的に階層を降りて
置換する場合はどうすればいいのでしょうか?

Can't find /XXX/XXX/XXX
という具合にパスの問題があるようです
00052NGNG
親ディレクトリを先にリネームしたのがよくなかったのでしょう。
下層ディレクトリから順に、ディレクトリパスの部分はそのままに
ファイル名のみを変換していけばよいと思います。
for i in $(find . -depth -name "*~*");do
mv $i $(echo $i|perl -pe '($a@`$b)=/(.*?)([^\/]*)$/;$b=~s/~/-/g;$_=$a.$b;')
done
■ このスレッドは過去ログ倉庫に格納されています