Move folders using Terminal by referencing a CSV file
There are many ways to tackle this task. Below is an approach using the Go language. I expect others will soon be along with alternative tools and languages.

If this is a one-time task, expect to spend time handholding the process. 

If this going to become a regular automated task, spend time now to get the script or tool right.

Things to be aware of:


Appreciate that the csv file format is not fully standardized.
Know that Excel has a reputation with the csv format.
Does any file or folder name contain a quote, space, or comma?
What happens if folders are listed but missing on disk?
What happens if a folder for moving is listed twice?
What happens if a folder for moving already exists at the destination?



  Back-up your data before running any answers.


csv-move

The csv-move tool requires UNIX/LF line endings. Converting the line endings is a problem solved elsewhere.

Ready to use binaries of csv-move are available in the latest release. Below is an extract of the code:

// Read from stdin - expects LF line endings
r := csv.NewReader(os.Stdin)
r.FieldsPerRecord = 2

for {
    line, err := r.Read()
    // ...

    // Perform the command
    cmd := exec.Command(mvPath, "-vn", line[0], line[1])
    if err := cmd.Run(); err != nil {
        log.Fatalf("move failed: %s", err.Error())
    }
}


Test your CSV file can be parsed as two entries per line:

./csv-move &lt; input.csv


Once tested, and you are happy with the printed move commands, perform the move:

./csv-move -move &lt; input.csv