端末を使用して連続した名前のファイルの名前を別のシーケンスに変更するにはどうすればよいですか?

端末を使用して連続した名前のファイルの名前を別のシーケンスに変更するにはどうすればよいですか?

「o1.ray」から「o293.ray」までのファイルを含むディレクトリがあります。 「o132.ray」から「o424.ray」に名前を変更しながら、別のディレクトリに移動したいと思います。

ターミナルでどうすればいいですか?

cd directory
for i in {1...293};
do cp o$i.ray subdirectory/o$i+131.ray;
done

私は次のような結果が得られたので、これが間違っていることを知っています。

error message 'cp: cannot stat 'o{1...293}.ray': No such file or directory 

ベストアンサー1

Kusalanandaが示唆したように、これは主に構文調整です。

for index in {1..293}; do echo mv o"${index}".ray subdirectory/o"$((index+131))".ray; done

echo出力が正しく表示されたら削除します。

またはzshを使用してください。zmvモジュール:

autoload zmv
zmv -n 'o(<->).ray' 'subdirectory/o$[$1 + 131].ray'

構文は算術演算を実行し、これは$[ ... ]次の括弧を使用して$1キャプチャされます。さまざまな数字をキャプチャするzshワイルドカード。エンドポイントがなく、あなたの場合は非常に具体的かもしれません。<->o<->

zmv -n 'o(<1-293>).ray' 'subdirectory/o$[$1 + 131].ray'

-n出力が正しく表示されたら削除します。

おすすめ記事