Копирование файлов с пробелами в имени с помощью сценария оболочки

Это симптоматично для этих двоих вместе:

  • установлен параметр -u, что приводит к тому, что неустановленные переменные вызывают ошибкуunbound variable
  • переменная WARNне была установлена ​​

Чтобы подтвердить или исключить эту ситуацию, выполните:

  • проверьте с помощью echo $-, установлен ли флаг u
  • попробуйте вручную echo "$WARN", чтобы убедиться, что он установлен, или выполните отладку с помощью параметра x
0
05.12.2019, 22:23
1 ответ

Основываясь на другом вопросе, упомянутом в моем комментарии, вот мое предложение (не проверено)

cd /share

do
  for allfiles in $(find /share/ -maxdepth 1 -type f -iname "*" -mmin +1);
  do
    aveIFS="$IFS"; IFS=''; ls $file; 
    sudo mv "$allfiles" /schoolstore/
    IFS="$saveIFS"
  done

Вероятно, есть способы его оптимизировать, и я удалил whileчасть вашего кода, так как кажется, что это не остановит.

Само собой разумеется, сделайте резервную копию всех ваших файлов перед запуском этого типа кода (или любого другого кода в этом отношении ).

В качестве альтернативы вместо изменения $IFS эту операцию можно было бы выполнить только с помощью одной команды findс использованием флага -exec. Вот что я имею в виду (еще раз, непроверенный):

find /share/ -maxdepth 1 -type f -iname "*" -mmin +1 -exec mv {} /schoolstore/ \;
0
28.01.2020, 03:03

Теги

Похожие вопросы