<?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>rename命令用法 &#8211; moneyslow.com</title>
	<atom:link href="https://moneyslow.com/tag/rename%e5%91%bd%e4%bb%a4%e7%94%a8%e6%b3%95/feed" rel="self" type="application/rss+xml" />
	<link>https://moneyslow.com</link>
	<description>making money with technology</description>
	<lastBuildDate>Sat, 30 Apr 2022 08:32:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.5</generator>
	<item>
		<title>Linux的rename 命令用法（有两个版本一个是C语言版本的一个是Perl语言版本的）</title>
		<link>https://moneyslow.com/linux%e7%9a%84rename-%e5%91%bd%e4%bb%a4%e7%94%a8%e6%b3%95%ef%bc%88%e6%9c%89%e4%b8%a4%e4%b8%aa%e7%89%88%e6%9c%ac%e4%b8%80%e4%b8%aa%e6%98%afc%e8%af%ad%e8%a8%80%e7%89%88%e6%9c%ac%e7%9a%84%e4%b8%80.html</link>
		
		<dc:creator><![CDATA[moneyslow]]></dc:creator>
		<pubDate>Sat, 14 Nov 2020 14:39:57 +0000</pubDate>
				<category><![CDATA[newest]]></category>
		<category><![CDATA[rename命令用法]]></category>
		<guid isPermaLink="false">https://moneyslow.com/?p=11649</guid>

					<description><![CDATA[早期的Linux发行版基本上使用的是C语言版本的，现在已经很难见到C语言版本的了， 由于历史原因，在Perl语言大红大紫的时候，Linux的工具开发者们信仰Perl能取代C，所以大部分工具原来是C版本的都被Perl改写了，因为 Perl版本的支持正则处理，所以功能更加强大，已经不再需要C语言版本的了。1。如何区分系统里的rename命令是哪个版本的?输入man rename 看到第一行是RENAME(1) Linux Programmer’s Manual RENAME(1)那么 这个就是C语言版本的。【我查看系统上应该就是C语言版本的】而如果出现的是：RENAME(1) Perl Programmers Reference Guide RENAME(1)这个就是Perl版本的了！两个版本的语法差异：C语言的，按照man上面的注解，rename的语法格式是：rename fromtofile这个命令有三个参数，分别是from ： 修改什么名字，to：改成什么名字，file 需要修改的文件是哪些。用法示例：比如，有一批文件，都是以log开头的，log001.txt, log002.txt ....... 一直到log100.txt现在想要把这批文件的log全部替换为historyrename log history log*【C的用法~】这句命令的意思很明白了，把 以log开头的所有文件中的log字符替换为history这样替换后的文件是：history001.txt, history002.txt ..... 一直到history100.txtrename C语言版本的另一个man示例是把后缀名批量修改，比如我们要将所有jpeg的后缀名图片文件修改为jpg文件。rename .jpeg.jpg*.jpeg这样，所有以.jpeg扩展的后缀名全部被修改为.jpg现在总结一下：rename C语言版本所能实现的功能：批量修改文件名，结果是每个文件会被用相同的一个字符串替换掉！也就是说，无法实现诸如循环 然后按编号重命名！2。Perl 版本的批量重命名，带有Perl的好处是，你可以使用正则表达式来完成很奇特的功能。perl 版本的参数格式：rename perlexprfiles注意，perl版本的rename只有两个参数，第一个参数为perl正则表达式，第二个参数为所要处理的文件man rename的帮助示例：1) 有一批文件，以.bak结尾，现在想把这些.bak 统统去掉。rename 's/\.bak$//' *.bak这个命令很简单，因为我还没有系统学习过perl，我不知道perl里替换字符串是不是这么干的，但sed是这么干的，所以如果你有sed或者tr基础，很容易明白，这个替换和sed里的正则语法是一模一样的。2) 把所有文件名内含有大小字母的，修改为小写字母。rename 'y/A-Z/a-z/' *依然和sed的替换语法一样，不用多解释，如果看不懂的话，可以系统学习一下sed先。还有几个比较实用的例子：1） 批量去掉文件名里的空格Linux文件名本来是不支持空格的，不知道什么时候允许了，当然，在命令行调用文件的时候，空格是很有问题滴，比如你 原来可以直接 mv oldfile newfile 但有空格就不行了 ， 得加双引号：mv "oldfile" "newfile" 或者用反斜杠转移 [&#8230;]]]></description>
		
		
		
			</item>
	</channel>
</rss>
