ディレクトリには、何千ものファイルがあります。数千のファイルを別々のフォルダに置くためのbashスクリプト
が、私はこれらのファイルの何千ものを作るために、次のbashスニペットを使用し、
、それぞれ1000個のファイルを持っている、フォルダに入れて、私は2つの問題に直面する:
a)は、今、各フォルダを接頭辞はdir_ですが、6桁の名前が必要ですが、フォルダ名に6未満の場合は、先頭のゼロを適切に追加する必要があります。
b)現在のスクリプト、最後のフォルダに最初のフォルダを入れます。たとえば、最後のフォルダとしてdir_400325があります。そこには、実行したbashスクリプトとdir_1000フォルダがあります。最初のフォルダが作成されます。どのように私はこれを変更することができますので、最初のフォルダは、最後のものに格納されていません?
#/ binに/ bashの
c=0; d=1000; mkdir -p dir_${d}
for file in *
do
if [ $c -eq 1000 ]
then
d=$((d + 1000)); c=0; mkdir -p dir_${d}
fi
mv "$file" dir_${d}/
c=$((c + 1))
done
それは動作しますが、私は次の警告を取得しますなぜ私は理解していない、とどのように私はそれを排除することができます。mv:「を、自身のサブディレクトリに「001000」を移動することはできません/パス/に/ 001000/001000 ' – dessie
'001000'はグロブ' * 'とマッチします。私の編集のように非ファイル( '[-f" $ file "]]でディレクトリをスキップすることもできます。 – Johnsyweb