Как я могу рекурсивно изменить случай файлов и папок под ударом

Состояние сна просто указывает на неактивное соединение. Это - клиент, который соединен, но не выполняющий запросов.

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

Неактивные соединения могут быть "управляемой" стороной сервера с переменной wait_timeout. Но Вы - более обеспеченное нахождение первопричины проблемы.

0
задан 26 November 2009 в 06:50
3 ответа
find . -depth -print0 | xargs -0 rename -n '$_ = lc $_'

Выньте флаг-n, после того как Вы уверены, что он делает то, что Вы хотите.

5
ответ дан 4 December 2019 в 11:08
  • 1
    По крайней мере, на моем компьютере, найдите возвраты папками перед файлами, таким образом, won' t это означает, что после того, как папка была переименована, имена файлов после нее будут неправильными? –  David Dean 26 November 2009 в 08:48
  • 2
    Необходимо использовать -depth опция find. –  Paused until further notice. 26 November 2009 в 08:50
  • 3
    +1 для -print0 и его находящаяся во власти пространством обработка имени файла. –  Steve Schnepp 26 November 2009 в 10:58
  • 4
    Единственная проблема с этим, это предполагает что Вы don' t имеют ситуации, где существует несколько исходных имен файлов с тем же раздавленным именем файла случая, таких как ThisFile.txt THISFILE.TXT и ThisFile.TXT. You' ll завершают уничтожение всех кроме последнего в цепочке. –  chris 26 November 2009 в 18:31
  • 5
    Обратите внимание, что переименовывают на некотором distro' s (Fedora/Redhat особенно) isn' t полезный жемчуг один - так этот won' t работа. –  James 27 November 2009 в 01:35

Это - больше комментария и meta наблюдение относительно способа, которым работает этот форум, но я чувствую довольно сильно, что нужно указать более громко, чем если бы я просто оставил комментарий в ответе rudedog. Это - также комментарий, направленный больше на людей, у которых может быть проблема, подобная вопросу David Dean, но не идентичные.

Легко сделать огромную сумму повреждения с рекурсивными операциями, которые переименовывают файлы. Позвольте мне повторить это, потому что это очень важно. Можно уничтожить огромный объем данных очень очень очень быстро с рекурсивными операциями, которые переименовывают файлы. Можно быстро представить полностью абсолютно неприменимую систему. Можно удалить 99% данных очень быстро. Такие действия должны быть сделаны очень тщательно и с длительным размышлением, резервными копиями и тестовыми прогонами.

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

  1. Версия "переименовывает" это, я использую, та же версия, которую Вы используете и что у них обоих есть функции безопасности, к которым я приучен. "переименуйте" не некоторая стандартная, нормальная утилита в Unix, насколько я знаю. Это, кажется, некоторый умный сценарий, который существует в некотором распределении.
  2. "переименуйте", как описано имеет некоторую функцию безопасности, которая предотвращает перезапись файла.
  3. или портившие файлы имеют однозначные результаты раздавленного случая, или это не грандиозное предприятие, если получающийся подкаталог имеет некоторые прописные файлы, потому что результаты случая сквоша имели коллизию, и изменяющий имя механизм ничего не делает, если целевое имя уже существует.

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

Короче говоря - вышеупомянутое использование сценария переименовывает, на 100% разумно в 90% случаев. 100%, корректных в 100% решения для случаев, на самом деле немного сложны и требуют некоторого ума имея дело с конфликтами пространства имен.

Но, как я сказал прежде, быть очень осторожным с рекурсивными операциями файла, особенно если они только munge метаданные, такие как полномочия или имена файлов. Они являются быстрыми и трудными инвертировать, не идя в резервные копии...

Вот пример того, как записать "переименовать" команду в ударе или ksh или некоторой другой оболочке modernish, которая "набрала". Давайте назовем этот сценарий/tmp/squash

#!/usr/local/bin/pdksh
# use some shell that supports typeset such as ksh, pdksh, or bash
# call this script from "xargs -0" and feed it with "find -print0"

typeset -l targetname || { echo "This shell doesn't support typeset!" >&2 ; exit 1 ; }
for file
do
  count=""
  target="$file"
  targetpath="${target%/*}/"
  targetname="${target##*/}"
  if
    [[ "$file" == "$targetpath$targetname" ]]  || [[ "$file" == . ]]
  then
    :
  else
    while
      test -e "$targetpath/$targetname""$count"
    do
      count=$((${count:-0}+1))
    done
    echo "renaming $file to $targetpath$targetname$count" >&2
    mv -n  "$file" "$targetpath$targetname$count"
  fi
done

Теперь, можно выполнить следующие две команды и иметь файлы все раздавленные и не иметь любой перезаписанный файл.

find /path/to/files -type f -print0 | xargs -0 /tmp/squash
find /path/to/files -type d -depth -print0 | xargs -0 /tmp/squash

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

3
ответ дан 4 December 2019 в 11:08

Я подчинюсь другим для ответа, но - тип f и - тип d как аргументы в пользу находки возвратит файлы и каталоги, соответственно. Если Вы хотели изменить файлы сначала, то каталоги... затем изменяют файлы сначала и затем каталоги.

0
ответ дан 4 December 2019 в 11:08

Теги

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