2016-10-15 35 views
0

MR000001、MR000002など、MR000070までの名前のファイルが1つのフォルダに多数あります。私はそのようなファイルを持つ多くのフォルダを持っています。私は、すべてのファイルを1つのフォルダにコピーして、番号が増え続けるように名前を変更したいと思います。たとえば、70の2番目のバッチをコピーする場合、ファイルの名前を71から140に変更するように名前を変更したいと思います。 3番目のバッチをコピーするときに、私は彼らの名前が141で始まり210になるようにしたいと思います。これをどのようにbashスクリプトで行うことができますか?これまでのところ、私はこれを持っている:番号付きファイル名でbashでファイルの名前を変更

for f in MR0000*; 
do 
    cp "$f" ""; 
done 

私は私が望むものを達成するために何かを空の引用に記入することができるはずだと思うが、私は何を知りません。

+0

また 'のprintf -V'を使用してファイル名を作成するために' printf'フォーマット文字列を活用し、数字のセット数に数値的にパディングすることができます。例えば'宣言-i cnt = 0;私のパス/ to/files/*; do printf -v newname "MR%5d" "$ cnt"; mv "$ i" "$ newname"; $((cnt ++));完了 –

答えて

0

一つの方法:

dst_dir=where/you/want/these/files/to/end/up/ 
dst_filenumber=0 
for src_dir in where/they/are/now/1 where/they/are/now/2 ; do 
    for src_filepath in "$src_dir"/MR0000* ; do 
    ((dst_filenumber++)) 
    dst_filename="$(printf MR%06d "$dst_filenumber")" 
    cp "$src_filepath" "$dst_dir/$dst_filename" 
    done 
done 
関連する問題