複数のディレクトリに一括コピー

複数のディレクトリに一括コピー

あるディレクトリに約9000個のファイルがあり、残りのファイルは無視してファイル名順に100個のディレクトリの90個のファイルに転送しようとします。存在するファイル名Xからファイル名Yに複数のファイルをコピーしますか?ガレブに書かれたコメント:

オブジェクトがバッチ処理する場合、より簡単な方法があります!ls | xargs -iX -n20 cp X target_folder/cpはすべて完了するまで20グループのファイルに対して実行されます。

それでは、xargsの使用に基づいてtarget_folderを切り替えて新しいフォルダを作成し、コマンドを100回繰り返すにはどうすればよいですか?

ベストアンサー1

bash次のコードを試してください。

#!/bin/bash

c=0

for f; do
    if ! ((c % 100)); then
        folder=folder_$(printf "%03d\n" $c)
        mkdir -p $folder
    fi

    [[ -d "$f" ]] || mv "$f" "$folder"
    ((c++))
done

次のようにスクリプトを実行します。

./script.bash *

おすすめ記事