91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統中rename命令如何使用

發布時間:2021-08-11 17:03:26 來源:億速云 閱讀:750 作者:Leah 欄目:系統運維

Linux系統中rename命令如何使用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Dos/Windows下,對文件改名用rename。而書上說,Linux下對文件或目錄改名該用mv。我一直也是這樣做的,卻忽略了Linux下也有個叫rename的命令。都是rename,但功能上就有點差異了。Linux下的rename更像批量改名的工具,是util-linux套件中提供的。

從mv和rename命令的man文檔中,可以看到如下信息:

代碼如下:


mv - move (rename) files
rename - Rename files


也就是說,mv也能用于改名,但不能實現批量處理(改名時,不支持*等符號的),而rename可以。
rename使用的格式:

代碼如下:


$ rename foo foo0 foo?


rename需要提供三個參數,然后才能決定最終結果。
模擬一下man文檔的例子,原文件:

代碼如下:


$ for i in `seq 100`;do touch foo$i;done
$ ls


foo1    foo18  foo27  foo36  foo45  foo54  foo63  foo72  foo81  foo90
foo10   foo19  foo28  foo37  foo46  foo55  foo64  foo73  foo82  foo91
foo100  foo2   foo29  foo38  foo47  foo56  foo65  foo74  foo83  foo92
foo11   foo20  foo3   foo39  foo48  foo57  foo66  foo75  foo84  foo93
foo12   foo21  foo30  foo4   foo49  foo58  foo67  foo76  foo85  foo94
foo13   foo22  foo31  foo40  foo5   foo59  foo68  foo77  foo86  foo95
foo14   foo23  foo32  foo41  foo50  foo6   foo69  foo78  foo87  foo96
foo15   foo24  foo33  foo42  foo51  foo60  foo7   foo79  foo88  foo97
foo16   foo25  foo34  foo43  foo52  foo61  foo70  foo8   foo89  foo98
foo17   foo26  foo35  foo44  foo53  foo62  foo71  foo80  foo9   foo99

改名結果:
(紅色是沒有改動的,藍色是有改動的一部分)
引用

代碼如下:


$ rename foo foo0 foo?
$ ls


foo01  foo100  foo20  foo30  foo40  foo50  foo60  foo70  foo80  foo90
foo02  foo11   foo21  foo31  foo41  foo51  foo61  foo71  foo81  foo91
foo03  foo12   foo22  foo32  foo42  foo52  foo62  foo72  foo82  foo92
foo04  foo13   foo23  foo33  foo43  foo53  foo63  foo73  foo83  foo93
foo05  foo14   foo24  foo34  foo44  foo54  foo64  foo74  foo84  foo94
foo06  foo15   foo25  foo35  foo45  foo55  foo65  foo75  foo85  foo95
foo07  foo16   foo26  foo36  foo46  foo56  foo66  foo76  foo86  foo96
foo08  foo17   foo27  foo37  foo47  foo57  foo67  foo77  foo87  foo97
foo09  foo18   foo28  foo38  foo48  foo58  foo68  foo78  foo88  foo98
foo10  foo19   foo29  foo39  foo49  foo59  foo69  foo79  foo89  foo99

代碼如下:


$ rename foo foo0 foo??
$ ls


foo001  foo011  foo021  foo031  foo041  foo051  foo061  foo071  foo081  foo091
foo002  foo012  foo022  foo032  foo042  foo052  foo062  foo072  foo082  foo092
foo003  foo013  foo023  foo033  foo043  foo053  foo063  foo073  foo083  foo093
foo004  foo014  foo024  foo034  foo044  foo054  foo064  foo074  foo084  foo094
foo005  foo015  foo025  foo035  foo045  foo055  foo065  foo075  foo085  foo095
foo006  foo016  foo026  foo036  foo046  foo056  foo066  foo076  foo086  foo096
foo007  foo017  foo027  foo037  foo047  foo057  foo067  foo077  foo087  foo097
foo008  foo018  foo028  foo038  foo048  foo058  foo068  foo078  foo088  foo098
foo009  foo019  foo029  foo039  foo049  foo059  foo069  foo079  foo089  foo099
foo010  foo020  foo030  foo040  foo050  foo060  foo070  foo080  foo090  foo100

該例子給出了兩種文件批量重命名的用法:
引用
第一個參數:被替換掉的字符串
第二個參數:替換成的字符串
第三個參數:匹配要替換的文件模式

rename支持通配符,基本的通配符有以下幾個:
引用
?    可替代單個字符
*    可替代多個字符
[charset]    可替代charset集中的任意單個字符

看看*的作用:
引用
$ rm -f *
$ for i in `seq 100`;do touch foo$i;done
$ rename foo foo0 foo*
$ ls
foo01    foo018  foo027  foo036  foo045  foo054  foo063  foo072  foo081  foo090
foo010   foo019  foo028  foo037  foo046  foo055  foo064  foo073  foo082  foo091
foo0100  foo02   foo029  foo038  foo047  foo056  foo065  foo074  foo083  foo092
foo011   foo020  foo03   foo039  foo048  foo057  foo066  foo075  foo084  foo093
foo012   foo021  foo030  foo04   foo049  foo058  foo067  foo076  foo085  foo094
foo013   foo022  foo031  foo040  foo05   foo059  foo068  foo077  foo086  foo095
foo014   foo023  foo032  foo041  foo050  foo06   foo069  foo078  foo087  foo096
foo015   foo024  foo033  foo042  foo051  foo060  foo07   foo079  foo088  foo097
foo016   foo025  foo034  foo043  foo052  foo061  foo070  foo08   foo089  foo098
foo017   foo026  foo035  foo044  foo053  foo062  foo071  foo080  foo09   foo099

再看看[charset]的作用:
引用

代碼如下:


$ rm -f *
$ for i in `seq 100`;do touch foo$i;done
$ rename foo foo0 foo[9]*
$ ls

foo09   foo099  foo17  foo26  foo35  foo44  foo53  foo62  foo71  foo80
foo090  foo1    foo18  foo27  foo36  foo45  foo54  foo63  foo72  foo81
foo091  foo10   foo19  foo28  foo37  foo46  foo55  foo64  foo73  foo82
foo092  foo100  foo2   foo29  foo38  foo47  foo56  foo65  foo74  foo83
foo093  foo11   foo20  foo3   foo39  foo48  foo57  foo66  foo75  foo84
foo094  foo12   foo21  foo30  foo4   foo49  foo58  foo67  foo76  foo85
foo095  foo13   foo22  foo31  foo40  foo5   foo59  foo68  foo77  foo86
foo096  foo14   foo23  foo32  foo41  foo50  foo6   foo69  foo78  foo87
foo097  foo15   foo24  foo33  foo42  foo51  foo60  foo7   foo79  foo88
foo098  foo16   foo25  foo34  foo43  foo52  foo61  foo70  foo8   foo89

Linux的rename 命令有兩個版本,一個是C語言版本的,一個是Perl語言版本的,判斷方法:
輸入man rename 看到第一行是
RENAME(1) Linux Programmer’s Manual RENAME(1)
這個就是C語言版本的 ---我的就是C語言版本
而如果出現的是
RENAME(1) Perl Programmers Reference Guide RENAME(1)
這個就是Perl版本的了

C語言版本格式:rename 原字符串 新字符串 文件名
樣例1:目錄test下存在兩個文件:a_01、a_02,若需要將文件名中的a替換為b,其他部分保持不變,則
(1) 若當前位于test目錄下,則執行 rename a b *
(2) 若當前位于test的父目錄,則執行 rename a b test/*

Perl語言版本格式:rename 's/原字符串/新字符串/' 文件名
樣例2:題目如樣例1,則
(1) 若當前位于test目錄下,則執行 rename 's/a/b/' *
(2) 若當前位于test的父目錄,則執行 rename 's/a/b' test/*
腳本實現方法:

代碼如下:


find -name "a*" -print |    
while read name    
do    
   echo $name    
   rename 's/a/b/' $name    
done

關于Linux系統中rename命令如何使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桐柏县| 林甸县| 潍坊市| 吴忠市| 和田县| 怀集县| 盘锦市| 日喀则市| 即墨市| 二连浩特市| 榆中县| 宁武县| 内江市| 天峻县| 多伦县| 江北区| 渭南市| 和林格尔县| 三门峡市| 昂仁县| 新和县| 米泉市| 固原市| 达日县| 屯留县| 东至县| 页游| 佛坪县| 福贡县| 资兴市| 涟水县| 新源县| 余江县| 阿拉善左旗| 酒泉市| 南岸区| 时尚| 吉水县| 杭锦旗| 台山市| 达孜县|