LINUX.ORG.RU

bash удаление символов из имен файлов и каталогов

 , ,


0

1

Здравствуйте, уважаемые форумчане! Помогите с проблемой: наша организация переходит на Astra linux, также сетевая «файлопомойка» NTFS мигрирует на ext4 с сохранением структуры каталогов и их содержимого, однако при миграции возникли проблемы:

1)так как пользователи работают с автоматизированными выгрузками из базы, то часто имена выгрузки бывают длинными 250 символов, что поддерживает NTFS но не поддерживает ext4. Кроме того в именах файлов пользователи часто используют нежелательные знаки (. , : ; ! ? * @ # " ^ и др.). При миграции не копируются множество файлов, а файлов очень много;

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

Собственно по проблеме 1 я накидал bash-скрипт, который отрабатывает по каталогу и его вложениям, где располагается скрипт:


#!/bin/bash

# Удаляем символы: , ; " ? ! * # @ из имен файлов
find "$(dirname "$0")" -type f | while read -r file; do
    new_filename=$(basename "$file" | tr -d ',;\"?!*#@$%^<>|~+')
    
    # Преобразуем имя файла в нужную кодировку utf-8 и удаляем недопустимые символы
    new_filename=$(echo "$new_filename" | iconv -f utf-8 -t utf-8//TRANSLIT)
    
    new_file="${file%/*}/$new_filename"
    
    if [ "$file" != "$new_file" ]; then
        mv "$file" "$new_file"
        echo "Удалены символы из имени файла: $new_filename"
    fi
done

# Сокращаем имена файлов более 100 символов и добавляем цифру к имени, если оно уже существует
find "$(dirname "$0")" -type f | while read -r file; do
    filename=$(basename "$file")
    if [ ${#filename} -gt 100 ]; then
        new_filename=$(echo "$filename" | cut -c 1-100)
        extension="${filename##*.}"
        
        new_filename=$(echo "$new_filename" | iconv -f utf-8 -t utf-8//TRANSLIT)
        
        new_file="${file%/*}/$new_filename.$extension"
        
        counter=1
        while [ -e "$new_file" ]; do
            new_file="${file%/*}/$new_filename-$counter.$extension"
            ((counter++))
        done
        
        mv "$file" "$new_file"
        echo "Сокращенное имя файла: $new_filename.$extension"
    fi
done

Скрипт сначала удаляет нежелательные символы из имен файлов, а затем сокращает имена файлов до 100 символов и если такое имя файла уже существует, то добавляет к имени цифру. Скрипт работает, но выдает ошибку о недопустимом символе 99, и не удаляет символ #. Помогите пожалуйста скорректировать код что бы не выходила ошибка и удалялись все символы. По второй проблеме я накидал скрипт, который также удаляет нежелательные символы из имен каталогов:

#!/bin/bash

# Получаем текущий каталог, где находится скрипт
current_dir="$(dirname "$0")"

# Перечисляем все подкаталоги текущего каталога
for dir in "$current_dir"/*/; do
    # Убираем только указанные нежелательные символы из названия подкаталога
    new_name=$(basename "$dir" | tr -d '.!?",~*^;:`')
    
    # Если новое имя отличается от старого, переименовываем каталог
    if [[ "$new_name" != $(basename "$dir") ]]; then
        echo "Переименовываю $dir в $new_name"
        mv "$dir" "$current_dir/$new_name"
    else
        echo "Имя $dir не требует изменений."
    fi
done

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

так как пользователи работают с автоматизированными выгрузками из базы, то часто имена выгрузки бывают длинными 250 символов, что поддерживает NTFS но не поддерживает ext4

Вообще поддерживает, но у ext4 лимит 255 байтов, а у ntfs 255 utf-16 символов (два байта на символ). В переименовании нужно иметь в виду, что кириллица занимает два байта на символ, а cjk-иероглифика ещё больше - т.е. тогда лимита на 100 символом может не хватить. Вообще, большая часть систем использует лимит 255, но можно использовать альтернативные (например, рейзерфс и рейзер4 имеют лимит на название файла близкий к 4кб).

Кроме того в именах файлов пользователи часто используют нежелательные знаки (. , : ; ! ? * @ # " ^ и др.). При миграции не копируются множество файлов, а файлов очень много;

Нежелательные в реалиях предприятия? С каких пор точка в имени файла это нежелательный знак? Кривые лапки. У ext4 нет запрещённых символов кроме nul.

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

В отличие от NTFS, у ext4 нет ограничений на путь файла, хз, про что это.

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka
  1. Именно про лимит, и именно про кириллицу. Наши сисадмины запустили копирование, очень большая часть каталогов и файлов не скопировались, было предложено менять вручную, но тогда работа встанет, так как файлопомойка существует с 2013 года и количество файлов .xls и .xlsx 2,8 Тб, отсюда и попытка автоматизировать, другие ФС нет возможности использовать, так как требование безопасности учредителя нашей конторы - только ext4. 2)Нежелательные символы… Приведу пример, во fly-fm внедрен скрипт который позволяет кликом правой клавиши отправит файл или группу файлов в cups на сетевой принтер не открывая, так вот если в имени файла есть (, * … # и др.) этот файл на печать не отправляется. Таких скриптов, облегчающих жизнь пользователю, множество и они не отрабатывают на файлах с такими именами. Да, может быть это вопрос кривых лапок, но когда конторе c зоопарком на 170 компов и 50 принтеров среди которых много очень экзотических сидевшей на Windows дали 6 месяцев на миграцию в Astra linux, мне кажется для 2х сисадминов это титанический труд.
  2. Да ext4 не лимитирует количество вложенных каталогов, но в Linux максимальная длина пути при открытии файла - 4096 байт (переменная MAX_PATH в limits.h) это длина строки пути. Так что также необходимо сокращать имена каталогов. Спасибо за быстрый, но бесполезный ответ.
hathory
() автор топика

Скрипт работает, но выдает ошибку о недопустимом символе 99, и не удаляет символ #

Добавь отладки, пропусти скрипт через -x и конкретнее посмотри, что там за символ 99. Сейчас это ни о чём не говорит.

Символ #, как и остальные, приведённые у тебя в команде tr -d удаляет. Т.е. опять же, надо подробнее смотреть, на чём именно он спотыкается.

shell-script ★★★★★
()

а затем сокращает имена файлов до 100 символов

есть подозрение, что до 100 байт, а не символов. Думаю cut работает как с ascii, а у вас utf-8
Может сработать "${filename:0:2}"

и не удаляет символ #

точно #, а не допустим #?

Преобразуем имя файла в нужную кодировку utf-8 и удаляем недопустимые символы
iconv -f utf-8 -t utf-8//TRANSLIT

судя по -f она уже нужная. Не знаю с чем боролись, но возможно тут //IGNORE имеет смысл

PS: посоветовал бы делать это не на баше

xgatron
()
Ответ на: комментарий от xgatron

Нет именно 100 символов, но это изменяемо, если скрипт работает, то можно уменьшить и до 50 символов.

Нет возможности не на bash, нам головная организация закрыла через сервер ALD Астры выполнение любых скриптов (py, js и тд.) оставили только bash, и то мандатная политика очень урезает возможности даже bash.

Преобразуем имя файла в нужную кодировку utf-8 и удаляем недопустимые символы

iconv -f utf-8 -t utf-8//TRANSLIT

Пока не примени эту строку скрипт крашился с ошибкой «недопустимый символ или последовательность символов»

hathory
() автор топика
Ответ на: комментарий от shell-script

Во второй части скрипта по переименовыванию файлов, лучше сначала прогнать через iconv, а потому уже через cut.

Спасибо, поправлю.

Господа, большая просьба, объясняйте как слабоумному, я биолог по образованию и со скриптами знаком только в рамках небольшой автоматизации рутинных процессов расчета различных величин.

Спасибо за понимание.

hathory
() автор топика
Ответ на: комментарий от hathory

Нет именно 100 символов

Это у вас ТЗ в символах, а по реализации есть вопросы

  1. есть ли в именах кириллица или что-то еще отличное от первой половины ascii?
  2. вы проверяли как оно у вас в терминале?

у меня вот так

$ echo раз | cut -c 1-3
р�

раз в utf-8 это 6 байт, так что оно и вывело половину байт, а не три символа

Во второй части скрипта по переименовыванию файлов, лучше сначала прогнать через iconv, а потому уже через cut.

и возможно указать -t ascii//TRANSLIT, чтобы все было латиницей, если это допустимо

для отладки можно добавить в начало скрипта set -x, но выведет оно очень много «логов»

Нет возможности не на bash

выгрузить список файлов, обработать его где-нибудь еще и сгенерировать баш скрипт, где будет только mkdir и mv. Как вариант, если флешки и пр. не отключили

xgatron
()

Файлы пронумеровать, собрать в один каталог, рядом положить descript.ion c оригинальным полным путем и именем.

Так как всё равно деструктивное переименование.

anonymous
()
Ответ на: комментарий от hathory

Как они копируют файлы без остановки?Смонтировали ресурс через SMB?

mount -t cifs //windows/share /mnt/windows 

Если да - в таком случае это ограничения SMB, а точнее реализации клиента и протокола.

Windows сервер поддерживает NFS.

Пробуйте через него и далее просто rsync, а не копирование.

А вот как вы потом будете подключать эти ресурсы к серверам или для пользователей уже другое дело.

Если через samba - там тоже будут ограничения, возможно они отключаемы.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Как я понял, вроде в Астре все идет через ALD сервер, он устанавливает квоты и ограничения и т.д., самба пока есть на переходный период, но от нее отказываемся, так как все реализовано в ALD, но я тут совсем мало понимаю, передо мной стоит задача переименовать файлы и каталоги на сетевом диске, что бы сократить труд специалистов нашего структурного подразделения.

hathory
() автор топика

Команда tr плохо работает с кирилицей, и вообще, лучше удалять нежелательные символы из имен файлов с помощью sed. Например,

new_name=$(basename "$dir" | sed 's/[.!?",~*^;:`]//g')

Если не поможет, изобретайте велосипед. Сначала замените символ # на например,\x10, а потом удалите все такие символы.

echo -n "пример.строки.с.точками" | sed 's/\./\x0/g' | sed 's/\x0/\-/g'

#	Обратите внимание, что -n используется для предотвращения добавления новой строки в конце, 
#	а \x0 представляет нулевой байт. 
#	Однако, вывод с нулевым байтом может не отображаться в терминале, 
#	так как он интерпретируется как конец строки.
# 
archive_name=$(echo -n "$archive_name" | sed 's/.*/\L&/' | sed 's/ /\x0/g'  | sed 's/\./\x0/g' | sed 's/\x0/_/g'| sed 's/__//g')

#. `echo -n "$archive_name"`: Эта часть выводит значение переменной `archive_name` без добавления символа новой строки в конце.
#. `sed 's/.*/\L&/'`: Этот `sed` заменяет всю строку на её нижний регистр. `\L&` означает "преобразовать всю строку в нижний регистр".
#. `sed 's/ /\x0/g'`: Этот `sed` заменяет все пробелы в строке на символ нулевого байта (`\x0`).
#. `sed 's/\./\x0/g'`: Этот `sed` заменяет все точки в строке на символ нулевого байта (`\x0`).
#. `sed 's/\x0/_/g'`: Этот `sed` заменяет все символы нулевого байта на символ подчеркивания (`_`).
#. `sed 's/__//g'`: Этот `sed` удаляет все двойные подчеркивания из строки.
#. `sed 's/\,/\x10/g'`: Заменяет все запятые (`,`) в строке на символ с кодом `\x10` (DLE, Data Link Escape).
#. `sed 's/\x10/-/g'`: Заменяет все символы `\x10` (которые были добавлены на этапе 3) на дефисы (`-`).
Overlabor5491
()
Ответ на: комментарий от xgatron

Да, именно так в наименовании файла после обработки скриптом и происходит р�, спасибо, понял.

Нет, в латиницу нельзя, нужно оставить на кириллице, так как первые 100 символов названия файла самое важное, остальным можно пренебречь, например имя файла: Выгрузка по административному центру автомобильные дороги 01.01.2024 код населенного пункта, код поселения, код региона, кадастровый номер объекта, дата введения в эксплуатацию.xslx Вот это «Выгрузка по административному центру автомобильные дороги 01.01.2024» надо сохранить, остальным можно пренебречь

hathory
() автор топика
Ответ на: комментарий от hathory

Кроме того в именах файлов пользователи часто используют нежелательные знаки (. , : ; ! ? * @ # " ^ и др.)

Ты пишешь то, что не является правдой. Вот запрещённые в Windows символы в именах файлов и директорий: https://ibb.co/JkS3sWS \/:*?"<>|.

Символы, указанные в твоём сообщении ты можешь использовать в именах файлов в Linux.

Может твои админы не умеют копировать?

Спроси их как они это делают.

все идет через ALD сервер

Спроси их что они делают. В документации Астра вообще сказано, что он удалён из его состава и есть только ALD Сервер Pro.

Думается мне, что у тебя там Windows администраторы, которые Linux никогда не видели.

Расскажи им про NFS и rsync. Может и переименовывать ничего не нужно.

Напротив, если ты в Linux смонтируешь файловую систему NTFS на съёмном диске - ты спокойно сможешь создать файл «c:\Windows\System32\Drivers\etc\hosts»

touch c:\\Windows\\System32\\Drivers\\etc\\hosts

ls -1
123:123
45
c:
'c:\Windows\System32\Drivers\etc\hosts'

file *
123:123:                               empty
45:                                    empty
c::                                    empty
c:\Windows\System32\Drivers\etc\hosts: empty

А потом не сможешь их удалить в Windows.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Ты пишешь то, что не является правдой. Вот запрещённые в Windows символы в именах файлов и директорий: https://ibb.co/JkS3sWS /:*?"<>|.

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

Спроси их что они делают. В документации Астра вообще сказано, что он удалён из его состава и есть только ALD Сервер Pro.

Тоже мой косяк в терминологии, да ALD Сервер Pro, но для меня просто ALD, с терминологией разобрались?

Может твои админы не умеют копировать?

Думаю умеют, ты просто разнеси проблемы, которые я описал: проблемы с копированием - это длинна имени файла и длина пути при открытии файла - 4096 байт;

Проблемы с символами в именах - невозможность автоматизировать некоторые процессы, где используются скрипты…

hathory
() автор топика
Ответ на: комментарий от hathory

Если в именах файлов каким-то образом в Windows встречаются указанные тобой символы - это очень странно, Windows не даст создать файл с такими символами в именах файлов или директорий. А вот Linux как раз даст.

И копирование стоит запускать на Linux системе. Т.е. создать сетевой ресурс NFS на Windows, смонтировать его в Linux и в Linux же и копировать.

А не создавать сетевой ресурс на Linux и копировать на него из под Windows.

kostik87 ★★★★★
()
Ответ на: комментарий от hathory

невозможность автоматизировать некоторые процессы, где используются скрипты…

Используй кавычки и переменные.

это длинна имени файла и длина пути при открытии файла - 4096 байт;

Сгенерировал строку длиной 500 символов:

str=`tr -dc A-Za-z0-9 </dev/urandom | head -c 500; echo `

Попробовал создать файл:

touch $str
touch: cannot touch 'FmbtJmTUQUZ9sAiIxcvN0lQwBjCfDrQ44Jo8KAuIwK0LdLe4nJD19J7hSG03WUOSxBnEXllayOvVVI1XgzFhm6aPsSxOV1QX1QLTUXiJKZNt4LloxjitQILcYklA6XJ5kPYzd3YILZNctXPTieYvkt7iTdS0fa2s605rs6gADvpKTe0ig9OLkHNSBUexy3epO9d3maeQZydEwG4XHo7WB6YzBXKGDJvBggdiOd5DzNuzplRMRHf6iIRN0r1IBMz2hZtq3dh9qcqwLzOngoDmYKw10PlK40m0toDdcBaR4KbB8miVtzAJmKLUaogElQp93jBBGsC2dcFccvJgCSdqzUSHYSW6qoZM7Qlg0bW90OQywyiy11WbQ6VwawBGJfYYKRZlzzXUhNn9WPMoIbAor5wBMdimceAWWJVUm8WLGKeD9jMklkIvdcDhAU6qPz669SjZfpCGCKkqDvWAlDSWpkIgDpTWGgq1uSakT5hwyOkYqFF3cfkg': File name too long

Да, не создаётся.

В Windows точно так же, попробовал создать текстовый документ с именем по этой строке, файл создался, но с обрезанным именем:

FmbtJmTUQUZ9sAiIxcvN0lQwBjCfDrQ44Jo8KAuIwK0LdLe4nJD19J7hSG03WUOSxBnEXllayOvVVI1XgzFhm6aPsSxOV1QX1QLTUXiJKZNt4LloxjitQILcYklA6XJ5kPYzd3YILZNctXPTieYvkt7iTdS0fa2s605rs6gADvpKTe0ig9OLkHNSBUexy3epO9d3maeQZydEwG4XHo7WB6YzBXKGDJvBggdiOd5DzNuzplRM.txt

Длина имени файл вместе с .txt - 245 символов.

Т.е. в Windows тоже нельзя создать файл с именем длиннее 255 символов, а по факту меньше.

Попробовал создать директорию, а в ней ещё одну, вложенная директория с именем в пару символов создалась, а вот с именем в 10 символов - уже нет, ошибка точно такая же - слишком длинное имя файла.

Так что ты что-то не то говоришь.

В общем, в Windows точно такие же ограничения, максимальная длина 255 символов и на NTFS и на Ext4.

kostik87 ★★★★★
()

У mv явно указывайте опцию -n, во избежания перезаписи.

Лучше сначала переименовать каталоги, а то ещё встрянете с MAX_PATH=4096. То есть нельзя, чтобы полное имя файла (с каталогами) было больше этого числа. Если что, нужно заходить в этот каталог, и там указывать относительное имя файла.

Каталоги нужно переименовывать от самых нижних к верхним. На bash писать рекурсивный обход каталогов сложно, проще написать скрип, переименовывающий один каталог и пусть find вызвает его, причём со сменой каталога. То есть скрипт запускается в том подкаталоге, где очередной каталог, начиная от самых вложеных. И в скрипте переименовывать $1, без добавления к нему спереди dirname.

find . -depth -type d -execdir SCRPT-PATH {} \; > /tmp/LOG.txt

То есть созадёте файл, там где можно исполняемые скрипты, (не знаю что там обрезает Альфа), примерно такого содержания:

#!/bin/bash
name=$(basename "$1")
new_name=$(printf "%s" "$name" | tr -d '.!?",~*^;:`')
# Здесь обрезка длины имени каталога, если надо

if [ "$name" != "$new_name" ]; then
   echo "Переименовываю $PWD/name в $new_name"
   mv -n -- "$1" "$new_name"
   if [ $? != 0 ] ; then
       echo "Неудачное преименовывание $PWD/name"
   fi
else
   echo "Имя $PWD/name не требует изменений."
fi
Даёте ему права на исполнение и полный путь к этому файлу указываете в команде find. find запускаете в том каталоге, откуда начинать переименовывание, ну или пишете этот каталог вместо точки первым аргументом. Потом читаете что насыпалось в /tmp/LOG.txt...

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от kostik87

kostik87, думай глубже и ширше. Ты создаешь файлы с именем на латинице, а вот кириллица в именах файлов в linux и Windows это 2 большие разницы, как говорят в Одессе. Длинна имени файла в Windows это 255 символов, а длинна файла в Linux 255 байт, разницу чувствуешь?

hathory
() автор топика
Ответ на: комментарий от hathory

Да пожалуйста:

ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ

На тебе 255 твёрдых знаков.

В Windows разницы никакой: https://ibb.co/HhgTTZV

Windows директорию с именем 255 твёрдых знаков создать дал, а хотя бы одну директорию в ней - уже нет.

В Linux - согласен, дал создать файл с именем длиною 128 твёрдых знаков.

ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ
ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ
touch: cannot touch 'ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ': File name too long

Тут уже да.

kostik87 ★★★★★
()
Ответ на: комментарий от hathory

Создать вложенные директории c кириллическими символами суммарной длиной более 500 кириллических символов можно:

pwd
/mnt/jfs/ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ/ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ/ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ/ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ/ЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪЪ

Проблема есть, но зачем создавать файл с именем более 127 символов тоже не понятно.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Проблема есть, но зачем создавать файл с именем более 127 символов тоже не понятно.

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

hathory
() автор топика
Ответ на: комментарий от annulen

Потому что большинство бюджетных организаций это люди «под козырек» - Учредитель сказал «надо», подписал постановление, народ ответил «есть» и «побежал» выполнять постановление.

hathory
() автор топика