<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Скрипт для обрезания длинных имён файлов]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=15395</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=15395&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Скрипт для обрезания длинных имён файлов».]]></description>
		<lastBuildDate>Fri, 29 Jul 2011 06:25:19 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Скрипт для обрезания длинных имён файлов]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=198674#p198674</link>
			<description><![CDATA[<div class="quotebox"><cite>Минздрав пишет:</cite><blockquote><p>Есть FAQ по запуску скриптов?</p></blockquote></div><p>1) создаём скрипт с любым именем. Хотя я обычно создаю скрипты с именем *.sh, что-бы самому не путаться.<br />2) в первой (это важно) строке пишем<br /></p><div class="codebox"><pre><code>#!/bin/bash</code></pre></div><p>Я обычно пишу скрипты именно для bash&#039;а. Хотя многие скрипты работают и с более простой оболочкой /bin/sh.<br />3) устанавливаем права доступа. Либо через гуй (скрины делать лень), либо<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">$ chmod +x script.sh</div><br />4) запускаем<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">$ ./script.sh</div><br /></p><div class="quotebox"><cite>Минздрав пишет:</cite><blockquote><p>Блин облом. А что нельзя оставлять первые 13 символов и последние заменять, с разрядом до третьего знака?</p></blockquote></div><p>откуда вы взяли такие правила?<br />В MS-DOS файлы именовались по правилу 8.3<br />12345678.123 например.<br />8 символов в имени + 3 символа в расширении, и точка между ними, итого 12 символов. 13 откуда?</p><p>Можно. Если вы мне объясните, на что заменять, и зачем это надо.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Fri, 29 Jul 2011 06:25:19 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=198674#p198674</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт для обрезания длинных имён файлов]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=198571#p198571</link>
			<description><![CDATA[<p>А как этот скрипт запускать?<br />Где директорию указывать в которой обрезаемые файлы лежат?<br />Есть FAQ по запуску скриптов?<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>правила резки:<br />пункты (4) и (5) повторяются, до ~9, если и такой есть, то программа завершается с ошибкой.</p></blockquote></div><p>Блин облом. А что нельзя оставлять первые 13 символов и последние заменять, с разрядом до третьего знака?</p>]]></description>
			<author><![CDATA[null@example.com (Минздрав)]]></author>
			<pubDate>Thu, 28 Jul 2011 17:33:01 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=198571#p198571</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт для обрезания длинных имён файлов]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=198411#p198411</link>
			<description><![CDATA[<p><strong>зависимости:</strong></p><p>bash.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 28 Jul 2011 06:15:30 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=198411#p198411</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт для обрезания длинных имён файлов]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=198410#p198410</link>
			<description><![CDATA[<p>правила резки:</p><p>1) полное имя состоит из имени и расширения.<br />2) если имя не больше 8и символов оно оставляется как есть.<br />3) если имя больше, то обрезаются все символы кроме первых 7и, и восьмым вставляется &#039;~&#039;<br />4) если такой файл уже есть, то берётся 6 символов, а 7ым и восьмым ставится ~1<br />5) если такой файл есть, то вставляется ~2<br />6) пункты (4) и (5) повторяются, до ~9, если и такой есть, то программа завершается с ошибкой.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 28 Jul 2011 06:14:16 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=198410#p198410</guid>
		</item>
		<item>
			<title><![CDATA[Скрипт для обрезания длинных имён файлов]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=198405#p198405</link>
			<description><![CDATA[<p>тут попросили.<br />этот скрипт делает хардлинки (вторые имена) на файлы, и если они слишком длинные их обрезает, например<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh"><br />$ ~/scripts/msdos_name ../TARGET<br />./x/y2/aaaaaaaaaaaaaaaaaaaaaa1.ext<br />mkdir: создан каталог «../TARGET/x/y2»<br />«../TARGET/x/y2/aaaaaaa~.ext» =&gt; «./x/y2/aaaaaaaaaaaaaaaaaaaaaa1.ext»<br />./x/y2/aaaaaaaaaaaaaaaaaaaaaa3.ext<br />«../TARGET/x/y2/aaaaaa~1.ext» =&gt; «./x/y2/aaaaaaaaaaaaaaaaaaaaaa3.ext»<br />./x/y2/aa&nbsp; aaaaa&nbsp; aaaaaaaa&nbsp; &nbsp;aaaa aaa.ext<br />«../TARGET/x/y2/aa__aaa~.ext» =&gt; «./x/y2/aa&nbsp; aaaaa&nbsp; aaaaaaaa&nbsp; &nbsp;aaaa aaa.ext»<br />./x/y2/f3<br />«../TARGET/x/y2/f3» =&gt; «./x/y2/f3»<br />./x/y2/aaaaaaaaaaaaaaaaaaaaaa2.ext<br />«../TARGET/x/y2/aaaaaa~2.ext» =&gt; «./x/y2/aaaaaaaaaaaaaaaaaaaaaa2.ext»<br />./x/y2/aaaaaaaaaaaaaaaaaaaaaa.ext<br />«../TARGET/x/y2/aaaaaa~3.ext» =&gt; «./x/y2/aaaaaaaaaaaaaaaaaaaaaa.ext»<br /></div></p><br /><div class="codebox"><pre><code>#!/bin/bash

TARGET=&quot;$1&quot;

if [ -z &quot;$TARGET&quot; ]; then
    cat &lt;&lt;EOT
Использование: `basename $0` TARGET
Создание хардлинков на файлы в CWD.
Хардлинки обрезаются по маздайным правилам.
EOT
    exit 70
fi

if [ ! -d &quot;$TARGET&quot; ]; then
    mkdir --parents &quot;$TARGET&quot;
    err=$?
    if [ $err != 0 ]; then
        exit $err
    fi
fi

find . -type f |\
    while read FILE; do
        echo &quot;$FILE&quot;
        DIRNAME=`dirname &quot;$FILE&quot;`
        DIRNAME=&quot;${DIRNAME#./}&quot;
        if [ ! -d &quot;$TARGET/$DIRNAME&quot; ]; then
            mkdir --verbose --parents &quot;$TARGET/$DIRNAME&quot;
            err=$?
            if [ $err != 0 ]; then
                exit $err
            fi
        fi

        BASENAME=`basename &quot;$FILE&quot;`
        EXT=&quot;${BASENAME##*.}&quot;
        if [ &quot;$EXT&quot; = &quot;$BASENAME&quot; ]; then
            EXT=&quot;&quot;
        else
            EXT=&quot;.$EXT&quot;
        fi
        NAME=&quot;${BASENAME%.*}&quot;
        if echo &quot;$NAME&quot; | grep -q &#039; &#039;; then
            NAME=`echo &quot;$NAME&quot; | sed &#039;s/\s/_/g&#039;`
        fi
        LEN_NAME=${#NAME}
        if (( $LEN_NAME &gt; 8 )); then
            NAME1=&quot;${NAME::7}~&quot;
            N=0
            while [ -f &quot;$TARGET/$DIRNAME/$NAME1$EXT&quot; ]; do
                (( N = N + 1 ))
                if [ $N = 10 ]; then
                    echo &quot;невозможно создать ещё один файл&quot;
                    exit 71
                fi
                NAME1=&quot;${NAME::6}~$N&quot;
            done
            NAME=&quot;$NAME1&quot;
        fi
        ln --verbose &quot;$FILE&quot; &quot;$TARGET/$DIRNAME/$NAME$EXT&quot;
        err=$?
        if [ $err != 0 ]; then
            exit $err
        fi
    done</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 28 Jul 2011 06:09:52 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=198405#p198405</guid>
		</item>
	</channel>
</rss>
