簡體   English   中英

需要使用批處理腳本將每 5000 個文件移動到新文件夾

[英]Need to move every 5000 files to new folder using batch script

我有一個包含 >10000000 個文件的文件夾,需要將它們移動到每個 5000 個的單獨文件夾中。 使用批處理腳本如何將它們移動到單個文件夾?

i=0
while true; do
    ls | head -5000 > ../files
    if [ ! -s ../files ]; then
       break
    fi
    (( i++ )) # Boomer here but feeling younger every day thanks to KamilCuk.
    mkdir ../dir$i # I know. No error checking here.
    while read filename; do
       mv "$filename" ../dir$i # No error checking here either.
    done < ../files
done

如果mkdirmv反復失敗,此腳本將變成無限循環。 您還可以指定存儲臨時文件要小心files並在你讓你的目標目錄; 否則下一個ls必須避免識別前一個循環迭代的輸出目錄。

如果文件名包含換行符(不太可能但很容易實現),腳本也會出現問題。 如果你有那個用例,那么這個腳本將再次進入無限循環,因為mv命令將失敗,因為read將無法正確讀取該文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM