img001.jpgからimg101693.jpgまで、101695個のファイルを含むディレクトリがあり、100個の画像ごとに異なるディレクトリに移動したいと思います。次のような投稿を見つけました。フォルダ内の4つのファイルをすべてコピーする方法ただし、これはすべてのファイルのシリアル番号で同じ桁数を想定しているため、私の範囲はimg000001.jpgで始まる必要があります。これを行う方法はありますか、またはすべての番号を持つようにファイル名を変更する必要がありますか?シリーズの登場人物は同じですか?
ベストアンサー1
dir0000
最後に、これらのファイルを100のグループに分けて、次の場所にある複数の...dir1016
ディレクトリに分散させたいとしますzsh
。
files=( img*.jpg(N.n) )
typeset -Z4 n=0
while (( $#files )); do
mkdir -p dir$n && cp -- $files[1,100] dir$n/
(( n++ ))
files[1,100]=()
done
globn
修飾子はファイルを数値でソートします。typeset -Z4
0 パディングは$n
長さ 4 に拡張されます。
zsh
sを使用すると、同時にビット数をコピーして変更することもzmv
できます。file<n>.jpg
dir<n/100>
zmodload zsh/files
mkcp() { mkdir -p -- $2:h && cp -- "$@"; }
autoload -Uz zmv
zmv -Pmkcp -n 'img(<->).jpg' \
'dir${(l[4][0])$(( $1 / 100 ))}/img${(l[6][0])1}.jpg'
(-n
満足すれば削除(テスト実行))。