「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
出力が正しく表示されたら削除します。