Как вы делаете несколько операторов SQL в одном mysql_query?

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

count=0
while IFS= read -r -d ' ' && IFS= read -r -d '' filename; do
  (( ++count > 3 )) && printf '%s\0' "$filename"
done < <(find . -maxdepth 1 -type f -printf '%T@ %P\0' | sort -g -z) \
     | xargs -0 rm -f --

Объяснение, как это работает:

  • Найти испускания <mtime> <filename><NUL> для каждого файла в текущем каталоге.
  • sort -g -z выполняет числовую (с плавающей точкой, в отличие от целочисленной) числовую сортировку на основе первого столбца (раз) с линиями, разделенными с помощью NUL.
  • Первый read в цикле while отключает mtime (больше не требуется после выполнения sort).
  • Второй read в цикле while читает имя файла (работает до NUL).
  • Цикл увеличивается, а затем проверяет счетчик; если состояние счетчика указывает, что мы прошли начальное пропущение, тогда мы печатаем имя файла, ограниченное NUL.
  • xargs -0 затем добавляет это имя файла в список argv, который он собирает, чтобы вызвать rm с.
15
задан Cœur 10 September 2017 в 06:31
поделиться