欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Linux下如何使用文件列表批量重命名文件?

錢良釵2年前16瀏覽0評論

Linux下批量重命名文件操作起來效率非常高,幾個命令就能夠搞定,經(jīng)理我還是老套路,先把問題分解:

  • 讀取使用文件列表

  • 解析文件列表的信息,重命名文件

所以能夠看出來讀取并且解析文件列表是比較核心關(guān)鍵的。

讀取解析文件列表

不知道題主說的用來重命名文件列表的文件大致是什么樣子,那我就舉一個相對常見的例子吧,來看這個用作重命名的filelist文件內(nèi)容:


日照香爐生紫煙.txt遙看瀑布掛前川.txt

舉頭望明月.txt低頭思故鄉(xiāng).txt

桃花潭水深千尺.txt不及汪倫送我情.txt


第一列是源文件名,第二列是目標(biāo)文件名。也就是說要將第一列的文件名重新命名為第二列的文件名。看到這樣的分列,馬上我們就想到了awk命令?,F(xiàn)在這個問題就轉(zhuǎn)換成了這樣一個流程:

先用cat讀入文件內(nèi)容,再使用awk將每一行的分列中的內(nèi)容分別取出,最后需要將取出的域變成mv命令的兩個參數(shù)。

我們先做解析文件:

catfilelist|awk-F'''{print$1;print$2}'

-F參數(shù)和后面的空格字符指定了域分隔符為空格,然后輸出兩個域的內(nèi)容,用分號分隔開是為了作為兩個字符串輸出(←這里是重點)。

解析文件列表的信息,重命名文件

在這里我們需要將上一節(jié)設(shè)計的命令的輸出結(jié)果作為參數(shù)傳遞給mv語句來實現(xiàn)重命名。這里用到的命令是xargs。xargs可以接收管道傳遞過來的字符串作為參數(shù)給后面的命令使用,比如:

echo'man.txt'|xargs-I{}mv{}ager.txt

這一句的意思就是將

man.txt

作為后面mv的第一個參數(shù),通過xargs傳遞給mv。xargs的-I參數(shù)指定后面的花括號{}作為參數(shù)的占位符,等同于傳遞過來的參數(shù)。

我們要實現(xiàn)的效果稍微復(fù)雜一點,因為我們的mv需要兩個參數(shù),要用到xargs的-n2參數(shù)來指定傳遞參數(shù)的個數(shù)為2。所以我們需要的語句的最終形式是這樣的:

  • catfilelist|awk-F'''{print$1;print$2}'|xargs-n2mv

看一下效果:

完美解決問題。

總結(jié)一下,批量重命名還有其它的辦法(我知道你又要說用while循環(huán)),但是我覺得這個應(yīng)該是比較方便的了。源文件和目標(biāo)文件的名字稍微處理一下,按照這種格式保存成為文本文檔,一串命令就搞定。

關(guān)于像這樣的批量重命名的操作,很多類似“運維面試100題”之類的文章里可能都有涉及,但是語焉不詳,命令生澀難記。學(xué)習(xí)Linux最好的辦法就是自己實際操作一下,更好的辦法就是關(guān)注經(jīng)理,每天看經(jīng)理的悟空問答,每天都有這類小操作的詳細(xì)解答。一天學(xué)一點,100天之后就會發(fā)現(xiàn)一個不同的自己。

如果我的回答對你有點價值,請莫忘點贊加關(guān)注,謝謝!歡迎在評論區(qū)發(fā)表各種意見。

本文為作者原創(chuàng),嚴(yán)禁轉(zhuǎn)載,違者必究。