Считаете, что Ubuntu недостаточно дружелюбна к новичкам? Помогите создать новое Руководство для новичков!
0 Пользователей и 1 Гость просматривают эту тему.
#!/bin/bashfor file in `ls -alF | grep '^-' | awk '{print $9}'`; do newfile=`echo $file | cut -c 1-12` mv $file $newfiledone
for file in `find "/etc/" -type f`doecho ${#file};done
Patch="/dir1/dir2/dir3/dir4"NameFile="file1.txt"NameFileNoExp="file1"
man dirnameman basename
dirnamebasename
Обрезать:Код: [Выделить]echo $name | cut -c 1-8
echo $name | cut -c 1-8
Определение количества символов:Код: [Выделить]${#name}
${#name}
${name::8}
len=16find -type f -exec bash -c ' fname=${0##*/} [ ${#fname} -gt "$len" ] && { tmp=${fname%.*} ext=${fname#$tmp} echo mv "$0" "${0%$fname}${tmp::$(($len-${#ext}))}$ext" } ' {} \;
ls -alF | grep '^-' | awk '{print $9}'
find -type f
cut -c 1-N
echo -n 'Имя какого-то файла.txt' | cut -c 1-8
find -printf "%f\n" | sed -n '/^.\{32\}/p'
обрезав с начала на нужное количество символов
3. awk '{print substr($0,<from>,<length>)}' - тот-же баг.
awk 'BEGIN{FS=""}{for(i=1;i<len;i++)printf("%s",$i);print $len}' len=8
sed 's/./\n/9;P;d'
# Максимальная длина имени файлаMAX_L=20IFS=$'\n'for F in $(find "$PWD" -type f)do FN="$(basename "$F")" if [ ${#FN} -gt $MAX_L ] then FD="$(dirname "$F")" # Новое имя файла - MAX_L символов от конца NFN="$(echo "$FN" | egrep -o ".{$MAX_L}$" | tr -d '\n')" if [ -f "$FD/$NFN" ] then N=2 # Пока файл с таким именем существует - добавляем в начало число от 2 и более # Но после этого длина становится больше MAX_L символов while [ -f "$FD/$N$NFN" ]; do let N+=1; done NFN="$N$NFN" fi # Переименовываем файл mv "$F" "$FD/$NFN" echo "\"$FN\" переименовано в \"$NFN\"" fidone
Код: [Выделить]sed 's/./\n/9;P;d'
if [ -f "$FD/$NFN" ]then N=2 # Пока файл с таким именем существует - добавляем в начало число от 2 и более # Но после этого длина становится больше MAX_L символов while [ -f "$FD/$N$NFN" ]; do let N+=1; done NFN="$N$NFN"fi
#!/bin/bash len=12add=0IFS=$'\n'olddir=''for file in `find $1 -type f | sort` ; do fname=`basename $file` [ ${#fname} -gt "$len" ] && { tmp=${fname%.*} ext=${fname#$tmp} dest="${file%$fname}${tmp::$(($len-${#ext}))}$ext" if [ -f $dest ]; then if [ "$olddir" = `dirname $file` ]; then let add+=1 else olddir=`dirname $file` add=1 fi while [ -f "${file%$fname}${tmp::$(($len-${#ext}-${#add}))}$add$ext" ]; do let add+=1; done mv "$file" "${file%$fname}${tmp::$(($len-${#ext}-${#add}))}$add$ext" echo "File moved from $file to ${file%$fname}${tmp::$(($len-${#ext}-${#add}))}$add$ext" else mv "$file" "${file%$fname}${tmp::$(($len-${#ext}))}$ext" echo "File moved from $file to ${file%$fname}${tmp::$(($len-${#ext}))}$ext" fi } done
mv "/путь/имя_файла" "/путь/новое_обрезаное_имя_файла"
Страница сгенерирована за 0.054 секунд. Запросов: 23.