<?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>Кибер-Фанк v2.0 &#187; xargs</title>
	<atom:link href="http://www.shatlovsky.ru/category/xargs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shatlovsky.ru</link>
	<description>Information must be free</description>
	<lastBuildDate>Fri, 12 Aug 2011 09:06:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Переименовать все файлы в нижний регистр</title>
		<link>http://www.shatlovsky.ru/2008/09/07/pereimenovat-vse-fajly-v-tekushhej-direktorii-v-nizhnij-registr/</link>
		<comments>http://www.shatlovsky.ru/2008/09/07/pereimenovat-vse-fajly-v-tekushhej-direktorii-v-nizhnij-registr/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 18:50:35 +0000</pubDate>
		<dc:creator>Alex Shatlovsky</dc:creator>
				<category><![CDATA[awk]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mv]]></category>
		<category><![CDATA[xargs]]></category>

		<guid isPermaLink="false">http://shatlovsky.nichost.ru/wps/?p=4</guid>
		<description><![CDATA[Переименовать все файлы в текущей и во всех вложенных директориях в нижний регистр: ~$ find ./ -type f &#124; awk '{ print $1 " " tolower($1) }' &#124; xargs -L 1 mv Харитон Мизгирь пишет: Чтобы обрабатывались пути с пробелами и проч. непечатностями надо использовать конструкцию типа: ~$ find -print0 &#124; xargs -0 Объяснение по [...]]]></description>
			<content:encoded><![CDATA[<p>Переименовать все файлы в текущей и во всех вложенных директориях в нижний регистр:</p>
<p><code class="em">~$ find ./ -type f | awk '{ print $1 " " tolower($1) }' | xargs -L 1 mv</code></p>
<p><strong>Харитон Мизгирь пишет</strong>: Чтобы обрабатывались пути с пробелами и проч. непечатностями надо использовать конструкцию типа:<br />
<code>~$ find <em>-print0</em> | xargs <em>-0</em></code></p>
<p>Объяснение по поводу параметра -print0 (find'а) и -0 (xargs'а)</p>
<p>В имени файла может попасться символ, который требует экранирования при обработке (single or double quotes, spaces or newlines). <code>print0</code> заставляет выводить список найденных файлов разделяя их через нуль-символ ('\0', в духе языка C, где он используется для декларации конца строки). <code>xargs</code> тоже должен быть готов к такому разделителю, для этого служит <code><em>-0</em></code>.</p>
<p><code>find</code> и <code>xargs</code> по разному себя ведет когда ищут из текущей директории или когда ищут из родительской (в родительской прекрасно обрабатывал директории с пробелами и любыми кавычками, которые находились в дочерней директории). newlines не обрабатывается нигде.</p>
<p>Провел такой эксперимент. Создал скрипт (в файле):</p>
<p><code>mkdir "Bad \<br />
bad \<br />
bad \<br />
dir"</code></p>
<p>– получил директорию с newlines.</p>
<p>Создал там файл README.txt и попытался его найти:</p>
<p><code>touch README.txt<br />
cd ..<br />
find . -name README.txt | xargs -I % ls %</code></p>
<p>Получил ошибку:</p>
<p><code>xargs: unmatched одинарная quote; by default quotes are special to xargs unless you use the -0 option</code><br />
(загадочное сообщение: "по умолчанию кавычки обрабатываются xargs, если только вы не используете параметр -0")</p>
<p>Та же команда в связке print0-0 работает нормально:</p>
<p><code>find . -name README.txt -print0 | xargs -0 -I % ls %</code></p>
<p>Ошибки, которые возникали в текущей директории (в родительской все было нормально):</p>
<p><code>ls: ./Временнаяnдиректория/README.txt: No such file or directory</code></p>
<p>То есть использование связки <code>print0 ... -0</code> желательно всегда. Можно прописать через <code>alias</code>'ы.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shatlovsky.ru/2008/09/07/pereimenovat-vse-fajly-v-tekushhej-direktorii-v-nizhnij-registr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

