1つの拡張子を持つすべてのファイルの名前を別の拡張子に再帰的に変更する方法

1つの拡張子を持つすべてのファイルの名前を別の拡張子に再帰的に変更する方法

フォルダがあるとしましょう。

/
/a.bub
/v.bub
/dr.bub
/catpictures
/catpictures/or.bub
/catpictures/on.bub

それぞれを.aaa

間違ったアプローチのように見えますが、私が得た結果は次のとおりです。

find -type f -name "*.bub" -print0 -exec mv

ベストアンサー1

最も簡単な方法はbash自体を使用することです。

for f in *.bub; do mv "$f" "${f/.bub/.aaa}"; done

@ZeroPiraeusと@HaukeLagingが正しく指摘したように、これは再帰的ではありません。有効にして再帰的に作成できます。globstarオプション:

shopt -s globstar
for f in **/*.bub; do mv "$f" "${f/.bub/.aaa}"; done

以前のバージョンのbashの場合は、以下を使用してくださいfind

find -type f -name "*.bub" | while read f; do 
  mv "$f" "${f/.bub/.aaa}";
done

おすすめ記事