日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Ubuntu 重命名文件

發(fā)布時(shí)間:2023/12/20 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu 重命名文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在linux下修改文件的名字有很多種方法,常用的有mv和rename。

一,mv

mv fromfile tofile

如把文件a.txt得命名為b.txt,可以是mv a.txt b.txt。

mv一次只能重命名一個(gè)文件,而且,它是移動(dòng)命令。如果tofile已經(jīng)存在的話,會(huì)直接裝原文件覆蓋,從而造成文件的丟失。當(dāng)然有選項(xiàng)可以對(duì)已存在的文件進(jìn)行提示,還是決定看看rename吧。

例子:將目錄A重命名為B

mv A B

例子:將/a目錄移動(dòng)到/b下,并重命名為c

mv /a /b/c


二 rename

本文介紹rename命令完成重命名批量文件語(yǔ)法,介紹了rename用到的Perl的替換和轉(zhuǎn)化形式,并給出常用正規(guī)表達(dá)式。最后給出幾個(gè)實(shí)例。
  偶爾會(huì)遇到需要重命名批量文件,最典型的例子就是數(shù)碼相機(jī)的相片,在Ubuntu可以用工具Purrr或者PerfixSuffix實(shí)現(xiàn)該功能,但重命名批量文件并不常用,為了偶爾的一次操作,安裝工具(可能通過(guò)Ubuntu Software Center或者sudo apt-get install安裝),加之圖形化界面操作也比較費(fèi)時(shí)間。事實(shí)上,rename命令就可以出色完成該工作。 一、rename命令   Linux的 rename 命令有兩個(gè)版本(C語(yǔ)言和Perl語(yǔ)言),早期的Linux發(fā)行版基本上使用的是C語(yǔ)言版本,現(xiàn)在系統(tǒng)幾乎都是Perl語(yǔ)言版本了(支持正則處理,功能更強(qiáng)大)[1]。可以通過(guò)命令man rename打開rename幫助文檔查看版本,如果第一行內(nèi)容如下,則是Perl語(yǔ)言版本。
  • RENAME(1) ? ? Perl Programmers Reference Guide ? ? ? ? ? ? ?RENAME(1)
  •   鑒于Perl語(yǔ)言版本是主流,本文只介紹該版本下rename的用法,C語(yǔ)言版本操作見[1]。Perl語(yǔ)言版本的rename命令格式如下:
  • rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  • -v(verbose)打印被成功重命名的文件 -n(no-act)只是顯示將被重命名的文件,而不重命名(重命名之前可以用-n確認(rèn) ?? ? ? ? ?需要重命名的文件) -f(force)覆蓋已經(jīng)存在的文件 perlexprPerl語(yǔ)言格式的正則表達(dá)式 files需要被替換的文件(比如*.c、*.h),如果沒給出文件名,將從標(biāo)準(zhǔn)輸入讀
      先舉個(gè)例子來(lái)感受下,比如將當(dāng)前目錄下所有*.nc文件中Sam3替換成Stm32,命令如下:
  • rename?-n?'s/Sam3/Stm32/'?*.nc  /*確認(rèn)需要重命名的文件*/
  • rename?-v?'s/Sam3/Stm32/'?*.nc  /*執(zhí)行修改,并列出已重命名的文件*/
  •   整個(gè)命令的重點(diǎn)在于Perl語(yǔ)言正則表達(dá)式,下一部分將予以較詳細(xì)的介紹。
    二、Perl正則表達(dá)式 2.1 三種形式[2] 匹配:m/<regexp>/? (可以省略m,直接寫成/regexp/) 替換:s/<pattern>/<replacement>/? 轉(zhuǎn)化:tr/<pattern>/<replacement>/    博文[3]給出了8種模式,rename命令常用到替換和轉(zhuǎn)化兩種(用匹配也沒意義)。轉(zhuǎn)換跟替換不同,替換是將replacement整個(gè)字符串替換pattern字符串,而轉(zhuǎn)換則是用replacement逐個(gè)字符替換pattern逐個(gè)字符,結(jié)果依賴于replacement與pattern字符個(gè)數(shù)(見下述分析)。 (1)替換 替換表達(dá)方式如下[3],還有一系列參數(shù),貌似不怎么用得著。
  • s/PATTERN/REPLACEMENT/egimosx
  • eEvaluate the right side as an expression. gMatch globally, i.e. all occurrences. iCase-insensitive pattern matching. mTreat string as multiple lines. oOnly compile pattern once, even if variables within it change. sTreat string as single line. xUse extended regular expressions (2)轉(zhuǎn)化 轉(zhuǎn)化有兩種等價(jià)表達(dá)方式,如下:
  • tr/SEARCHLIST/REPLACEMENTLIST/cds
  • y/SEARCHLIST/REPLACEMENTLIST/cds
  • cComplement the SEARCHLIST. dDelete found but unreplaced characters. sSquash duplicate replaced characters.   轉(zhuǎn)化同替換不同,用REPLACEMENTLIST逐個(gè)字符替換SEARCHLIST逐個(gè)字符,比如'tr/Sam/Stm/',用S替代S,t替代a,m替代m。結(jié)果依賴于兩者字符長(zhǎng)短,下面以文件名FastSpiSam3C.nc為例進(jìn)行說(shuō)明:
  • jelline@jelline:~$?rename?-n?'tr/Sam3/Stm/'?FastSpiSam3C.nc /*替換字符短,用最后一個(gè)字符m替換3*/
  • FastSpiSam3C.nc renamed as FtstSpiStmmC.nc

  • jelline@jelline:~$?rename?-n?'tr/Sam3/Stm32/'?FastSpiSam3C.nc?/*替換字符長(zhǎng),多出字符被忽略*/
  • FastSpiSam3C.nc renamed as FtstSpiStm3C.nc
  •   參數(shù)c、d、s把我搞懵了,本想通過(guò)一系列操作,總結(jié)規(guī)律,結(jié)果徒勞。
    2.2 常用模式 正則表達(dá)式中的一些常用模式pattern[2]: x?  匹配 0 次或一次 x 字符串 x*  匹配 0 次或多次 x 字符串,但匹配可能的最少次數(shù) x+  匹配 1 次或多次 x 字符串,但匹配可能的最少次數(shù) .*  匹配 0 次或一次的任何字符 .+  匹配 1 次或多次的任何字符 {m} 匹配剛好是 m 個(gè) 的指定字符串 {m,n}匹配在 m個(gè) 以上 n個(gè) 以下 的指定字符串 {m,} 匹配 m個(gè) 以上 的指定字符串 []  匹配符合 [] 內(nèi)的字符 [^] 匹配不符合 [] 內(nèi)的字符 [0-9]匹配所有數(shù)字字符 [a-z]匹配所有小寫字母字符 [^0-9]匹配所有非數(shù)字字符 [^a-z]匹配所有非小寫字母字符 ^   匹配字符開頭的字符 $   匹配字符結(jié)尾的字符 \d  匹配一個(gè)數(shù)字的字符,和 [0-9] 語(yǔ)法一樣 \d+  匹配多個(gè)數(shù)字字符串,和 [0-9]+ 語(yǔ)法一樣 \D  非數(shù)字,其他同 \d \D+  非數(shù)字,其他同 \d+ \w   英文字母或數(shù)字的字符串,和 [a-zA-Z0-9] 語(yǔ)法一樣 \w+  和 [a-zA-Z0-9]+ 語(yǔ)法一樣 \W   非英文字母或數(shù)字的字符串,和 [^a-zA-Z0-9] 語(yǔ)法一樣 \W+ ? 和 [^a-zA-Z0-9]+ 語(yǔ)法一樣 \s ? ?空格,和 [\n\t\r\f] 語(yǔ)法一樣 \s+ ? 和 [\n\t\r\f]+ 一樣 \S ? ?非空格,和 [^\n\t\r\f] 語(yǔ)法一樣 \S+ ? 和 [^\n\t\r\f]+ 語(yǔ)法一樣 \b ? ?匹配以英文字母,數(shù)字為邊界的字符串 \B ? ?匹配不以英文字母,數(shù)值為邊界的字符串 a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串 abc ? 匹配含有 abc 的字符串
    三、實(shí)例 3.1?將所有*.nc文件中Sam3替換成Stm32
  • rename?-v?'s/Sam3/Stm32/'?*.nc  /*執(zhí)行修改,并列出已重命名的文件*/
  • 3.2 去掉文件后綴名(比如去掉.bak)
  • rename?'s/\.bak$//'?*.bak
  • 3.3 將文件名改為小寫
  • rename?'y/A-Z/a-z/'?*
  • 3.4 去掉文件名的空格
  • rename?'s/[ ]+//g'?*
  • 3.5 文件開頭加入字符串(比如jelline)
  • rename?'s/^/jelline/'?*
  • 3.6 文件末尾加入字符串(比如jelline)
  • rename?'s/$/jelline/'?*

  • 總結(jié)

    以上是生活随笔為你收集整理的Ubuntu 重命名文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。