<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог сисадмина &#187; shell</title>
	<atom:link href="http://avz.org.ua/wp/tag/shell/feed/" rel="self" type="application/rss+xml" />
	<link>http://avz.org.ua/wp</link>
	<description>Заметки о Linux и прочие полезные howto</description>
	<lastBuildDate>Thu, 02 Sep 2010 17:53:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Удаление файлов, расширения которых не входят в заданный список</title>
		<link>http://avz.org.ua/wp/2009/06/16/bash-file-deleting-with-bad-ext/</link>
		<comments>http://avz.org.ua/wp/2009/06/16/bash-file-deleting-with-bad-ext/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 11:02:00 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[ *nix]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[xargs]]></category>

		<guid isPermaLink="false">http://avz.org.ua/wp/?p=252</guid>
		<description><![CDATA[Есть задача &#8211; удалять из заданных директорий все файлы кроме тех, &#171;расширения&#187; которых входят в заданный список: .mp3 .mp3_env .mp3_dig .mp2_env .mp2_dig .wav .wav_env .wav_dig Сразу приношу свои извинения эстетам, которые скажут, что в UNIX-like OS нет понятия &#171;расширение имени файла&#187;, и что это чисто DOS-овская терминология. Я понимаю, просто так проще было выразить мысль [...]


Похожие заметки:<ol><li><a href='http://avz.org.ua/wp/2009/01/03/business-seminars/' rel='bookmark' title='Permanent Link: Список жизненно необходимых бизнес-семинаров'>Список жизненно необходимых бизнес-семинаров</a> <small># Техника успешных распродаж. Методы подготовки распродавцов. # Эффективное управление персоналом в нетрезвом состоянии. # Клиент прежде всего урод. Основы...</small></li>
<li><a href='http://avz.org.ua/wp/2009/02/14/hobocopy/' rel='bookmark' title='Permanent Link: hobocopy &#8211; копирование файлов, которые используются в данный момент'>hobocopy &#8211; копирование файлов, которые используются в данный момент</a> <small>Оригинальное название статьи &#8211; &#8216;Backup/Copy Files that are &laquo;In Use&raquo; or &laquo;Locked&raquo; in Windows&#8217;. Если Вы когда-то пробовали скопировать файл,...</small></li>
<li><a href='http://avz.org.ua/wp/2009/07/04/bash-history-timestamp/' rel='bookmark' title='Permanent Link: История команд в bash с указанием даты и времени'>История команд в bash с указанием даты и времени</a> <small>Читая в очередной раз man по bash-у, наткнулся на интересную переменную оболочки, цитирую: HISTTIMEFORMAT If this variable is set and...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Есть задача &ndash; удалять из заданных директорий все файлы кроме тех, &laquo;расширения&raquo; которых входят в заданный список:</p>
<ul>
<li>.mp3
<li>.mp3_env
<li>.mp3_dig
<li>.mp2_env
<li>.mp2_dig
<li>.wav
<li>.wav_env
<li>.wav_dig
</ul>
<p>Сразу приношу свои извинения эстетам, которые скажут, что в UNIX-like OS нет понятия &laquo;расширение имени файла&raquo;, и что это чисто DOS-овская терминология. Я понимаю, просто так проще было выразить мысль :)</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">PREFIX=</span><span class="sy0">/</span>var<span class="sy0">/</span>spool<span class="sy0">/</span>samba</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">SUBJ=</span><span class="st0">&quot;Deleted files from $PREFIX at `/bin/hostname -s`&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">TMP=</span><span class="sy0">/</span>var<span class="sy0">/</span>tmp<span class="sy0">/</span>`<span class="kw2">basename</span> $<span class="nu0">0</span>`.<span class="re4">$$</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">EMAIL=</span>admin<span class="sy0">@</span>somehost.com</div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># Base list of allowed extensions</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">EXTs=</span><span class="st0">&quot;mp3 mp2 wav&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">REGEX=</span><span class="st0">&quot;.*<span class="es0">\.</span><span class="es0">\(</span>&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> i <span class="kw1">in</span> <span class="re1">$EXTs</span>; <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re2">REGEX=</span><span class="st0">&quot;${REGEX}${i}<span class="es0">\|</span>&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re2">REGEX=</span><span class="st0">&quot;${REGEX}${i}_env<span class="es0">\|</span>&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re2">REGEX=</span><span class="st0">&quot;${REGEX}${i}_dig<span class="es0">\|</span>&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">done</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># Trailing &quot;|&quot; deleting</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">REGEX=</span>$<span class="br0">&#123;</span>REGEX<span class="sy0">/%|/</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># Trailing &quot;\&quot; deleting</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">REGEX=</span>$<span class="br0">&#123;</span>REGEX<span class="sy0">/%</span>\\<span class="sy0">/</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># Closing regex</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">REGEX=</span><span class="st0">&quot;${REGEX}<span class="es0">\)</span>$&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># В результате получили такой regex:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &quot;.*\.\(mp3\|mp3_env\|mp3_dig\|mp2\|mp2_env\|mp2_dig\|wav\|wav_env\|wav_dig\)$&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> DIR <span class="kw1">in</span> <span class="re0">$<span class="br0">&#123;</span>PREFIX<span class="br0">&#125;</span><span class="sy0">|</span>><span class="sy0">/</span>dir1 <span class="re0">$<span class="br0">&#123;</span>PREFIX<span class="br0">&#125;</span><span class="sy0">|</span>><span class="sy0">/</span>dir2; <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">find</span> <span class="re1">$DIR</span> -<span class="kw3">type</span> f <span class="sy0">!</span> -iregex <span class="st0">&quot;${REGEX}&quot;</span> -print0 <span class="sy0">|</span> \</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">xargs</span> --null -r <span class="kw2">stat</span> --<span class="re2">printf=</span><span class="st0">&quot;|%n|<span class="es0">\n</span>&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$TMP</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">find</span> <span class="re1">$DIR</span> -<span class="kw3">type</span> f <span class="sy0">!</span> -iregex <span class="st0">&quot;${REGEX}&quot;</span> -print0 <span class="sy0">|</span> \</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">xargs</span> --null -r <span class="kw2">rm</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">done</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> `<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">cat</span> <span class="re1">$TMP</span> <span class="sy0">|</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">wc</span> -l` -gt <span class="nu0">0</span> <span class="br0">&#93;</span>; <span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">cat</span> <span class="re1">$TMP</span> <span class="sy0">|</span> <span class="sy0">/</span>bin<span class="sy0">/</span>mail -s <span class="st0">&quot;$SUBJ&quot;</span> <span class="re1">$EMAIL</span> -- -f robot<span class="sy0">@</span>someserver.com</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span> -f <span class="re1">$TMP</span> <span class="br0">&#93;</span> <span class="sy0">&amp;&amp;</span> <span class="kw2">rm</span> <span class="re1">$TMP</span></div>
</li>
</ol>
</div>


<p>Похожие заметки:<ol><li><a href='http://avz.org.ua/wp/2009/01/03/business-seminars/' rel='bookmark' title='Permanent Link: Список жизненно необходимых бизнес-семинаров'>Список жизненно необходимых бизнес-семинаров</a> <small># Техника успешных распродаж. Методы подготовки распродавцов. # Эффективное управление персоналом в нетрезвом состоянии. # Клиент прежде всего урод. Основы...</small></li>
<li><a href='http://avz.org.ua/wp/2009/02/14/hobocopy/' rel='bookmark' title='Permanent Link: hobocopy &#8211; копирование файлов, которые используются в данный момент'>hobocopy &#8211; копирование файлов, которые используются в данный момент</a> <small>Оригинальное название статьи &#8211; &#8216;Backup/Copy Files that are &laquo;In Use&raquo; or &laquo;Locked&raquo; in Windows&#8217;. Если Вы когда-то пробовали скопировать файл,...</small></li>
<li><a href='http://avz.org.ua/wp/2009/07/04/bash-history-timestamp/' rel='bookmark' title='Permanent Link: История команд в bash с указанием даты и времени'>История команд в bash с указанием даты и времени</a> <small>Читая в очередной раз man по bash-у, наткнулся на интересную переменную оболочки, цитирую: HISTTIMEFORMAT If this variable is set and...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://avz.org.ua/wp/2009/06/16/bash-file-deleting-with-bad-ext/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
