Я использовал следующий код для перемещения большого количества файлов:

sourceDIR=/Volumes/MCOOPER/data
destDIR=/Volumes/MCOOPER2 /data
for i in {1..6000}
do
mv $sourceDIR/run$i.mat $destDIR/
done

Теперь все мои файлы исчезли. Есть ли способ получить их? Большое спасибо.

1 ответ1

0

Обратите внимание, что ваше определение destDIR не устанавливает его значение вообще; он просто пытается запустить программу /data с этим набором переменных. Поскольку /data не называет программу, ничего значимого не происходит.

Теперь, видя, что $destDIR не определен, ваша командная строка mv сводится к следующему:

mv /Volumes/MCOOPER/data/run10.mat /

Поэтому разумно предположить, что ваши файлы были перемещены в корневой каталог. Вы проверяли там?

Кроме того, в качестве общего совета, есть, по крайней мере, три вещи, которые вы можете захотеть сделать, чтобы избежать несчастных случаев, подобных этому, в будущем:

  • Всегда заключайте в кавычки ваши расширения параметров, если вы не хотите, чтобы они были разделены по словам: mv "$sourceDIR/run$i.mat" "$destDIR"
  • Если вы явно не знаете, что хотите заменить файлы, запустите mv с ключом -i чтобы избежать случайной замены.
  • Когда вы знаете, что хотите переместить вещи в каталог, полезно поставить последнюю косую черту в этом имени каталога в качестве защиты от случайного переименования файла (ов). То есть: destDIR=/Volumes/MCOOPER2/data/

Кроме того, вы можете или не можете, в зависимости от ваших обстоятельств, запускать set -e , чтобы завершить работу оболочки при сбое какой-либо команды вместо продолжения выполнения последующих команд.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .