Считаете, что Ubuntu недостаточно дружелюбна к новичкам? Помогите создать новое Руководство для новичков!
0 Пользователей и 1 Гость просматривают эту тему.
EvangelionDeath, Да, но зато файлы не будут затерты как в варианте от Azure.Т.к при переименовании:Код: [Выделить]mv "/путь/имя_файла" "/путь/новое_обрезаное_имя_файла"файл "/путь/новое_обрезаное_имя_файла" если он уже существовал, будет затерт.
mv "/путь/имя_файла" "/путь/новое_обрезаное_имя_файла"
Да, но количество переборов тоже как бы с каждым разом будет все расти и расти.
Чуть выше исправил скрипт azure
лучше использовать скозное нумерование, а не сбрасывать счетчик постоянно. При свозном шанс попасть на уже занятое имя куда меньше
переборов чего?
Файлы будут перезаписыватся. А поможет только ключ -n,но потом нужно будет непереименованные файлы вручную переименовывать.
Нет, не лучше, т.к. в каждой папке номер в имени будет начинатся не с 2, а с какого-то неизвестного числа.
переборов вариантов имени.
1) Зато имя будет начинатся так как оно начиналось с самого начала
2) именование с конца файла это куда лучше. особенно что-то вида 1050DVD.SUB.avi или 201920x1080.jpeg - ну очень понятные названия
Код: (bash) [Выделить]for file in `find $1 -type f` ; do
for file in `find $1 -type f` ; do
переборов вариантов имени.Нет не будет.
С номера файла в какой-то директории, в которой перед переименованием файл был уже найден - это не начало.
Как вариант: $N$NFN заменить на $N_$NFN
1050_DVD.SUB.avi или 20_1920x1080.jpeg - сразу все стало ясно!
IFS=$'\n'; fname='.Abcdef абв 123'; tmp=${fname%.*}; ext=${fname#$tmp}; echo $tmp; echo $ext
Если файла не существует - то и переборов не будет.
Да читабельнее и проще, и в моем варианте отрезается лишнее не с конца до точки, а с начала.
Еще в вашем варианте и от Azure будут не правильно обрабатыватся файлы только с точкой в начале:
все началось из-за того, что вы начали говорить о перезаписи)
mv "exist_file1" "exist_file2"
а в вашем правильно? в нашем выводит эксепшн
А в вашем вместо скрытого файла получаем непонятно что
IFS=$'\n'; len=12; file='/path/to/Abcdef абв 123.abcdefgabcdefg'; fname=`basename $file`; tmp=${fname%.*}; ext=${fname#$tmp}; dest="${file%$fname}${tmp::$(($len-${#ext}))}$ext"; echo "$dest"
[ ${#ext} -gt $len ] && continue
while read file ; do … ; done < <(find -type f)
Cxms, нет. Не перезаписывает. Оно ищет доступное имя для файла. Повторяю еще раз, проверяйте вначале.
Если желаемая длина файла меньше длины и длины расширения или скрытого файла без разширения
[ ${#tmp} = 0 ] && { tmp=".$fname"; ext=""; }
Что касаетсяКод: [Выделить]for file in `find $1 -type f` ; doэто вообще неправильная конструкция в принципе. Для корректной обработки следует использоватьКод: [Выделить]while read file ; do … ; done < <(find -type f)
if [ -f $dest ]; then while [ -f "${file%$fname}${tmp::$(($len-${#ext}-${#add}))}$add$ext" ]; do let add+=1; done ...else ...fi
Страница сгенерирована за 0.068 секунд. Запросов: 23.