2017-09-08 12 views
1

の名前を変更コピーして、次のように私が構造を持っているresursively

./en-us/sitemap.html to ./en-us/psitemap.html 
./en-es/sitemap.html to ./en-es/psitemap.html 

I試みたfindexecのバリエーションが、運がない。ここで

find . -type f -name "sitemap.html" -printf "cp %p %p \n" | sed 's/sitemap.html$/psitemap.html\1/g'

私はpsitemap.htmlで最後sitemap.htmlのを交換しようとして失敗しました。

これらのファイルを簡単にコピーして名前を変更するにはどうすればよいですか?

答えて

4

あなたは-execdirオプションを使用することができます。

+1

'-execdir'をうまく使います! – hek2mgl

+0

完全にはっきりしているわけではありませんが、OPの名前を変更するだけでなく、新しい名前でOPをコピーしたかったようです。 –

4

使用パラメータ展開 - 置換:

find . -type f -name "sitemap.html" -execdir echo mv {} psitemap.html \; 

出力に満足すると、コマンド上からechoを削除:

for file in ./*/sitemap.html ; do cp "$file" "${file/sitemap/psitemap}" ; done 
関連する問題