持っているファイルの束をコピーして、それらがシーケンシャルのままになるようにする必要があります。ファイルは同じフォーマットを持っています:file-0.D
、file-10.D
、file-20.D
、... file-990.D
。file-0 = file-1000、file-10 = file-1010などにしたいのですが、どうすればよいですか?
各ファイル名の数値を1000ずつインクリメントし、残りはそのままにしておくには、正規表現を使用できます。
re='(.*-)([[:digit:]]+)(.*)'
for f in file*; do
[[ $f =~ $re ]]
echo mv "$f" "${BASH_REMATCH[1]}$(( ${BASH_REMATCH[2]} + 1000 ))${BASH_REMATCH[3]}"
done
結果が希望どおりの場合は、を削除できますecho
。
または、Perlrename
ツールをお持ちの場合は、
rename -n 's/\d+/$&+1000/e' file-*
-n
置換が問題ないようになったら削除します。これはrename
、util-linuxプロジェクトのツールでは機能しないことに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加