1. 程式人生 > >Ubuntu下重新命名檔案

Ubuntu下重新命名檔案

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

一,mv

mv fromfile tofile

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

mv一次只能重新命名一個檔案,而且,它是移動命令。如果tofile已經存在的話,會直接裝原檔案覆蓋,從而造成檔案的丟失。當然有選項可以對已存在的檔案進行提示,還是決定看看rename吧。

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

mv A B

例子:將/a目錄移動到/b下,並重命名為c

mv /a /b/c

二,rename
   Linux的 rename 命令有兩個版本(C語言和Perl語言),早期的Linux發行版基本上使用的是C語言版本,現在系統幾乎都是Perl語言版本了(支援正則處理,功能更強大)[1]。可以通過命令man rename開啟rename幫助文件檢視版本,如果第一行內容如下,則是Perl語言版本。
  1. RENAME(1)     Perl Programmers Reference Guide              RENAME(1)
   鑑於Perl語言版本是主流,本文只介紹該版本下rename的用法。Perl語言版本的rename命令格式如下:
  1. rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-v(verbose)列印被成功重新命名的檔案 -n(no-act)只是顯示將被重新命名的檔案,而不重新命名(重新命名之前可以用-n確認需要重新命名的檔案) -f(force)覆蓋已經存在的檔案 perlexprPerl語言格式的正則表示式
files需要被替換的檔案(比如*.c、*.h),如果沒給出檔名,將從標準輸入讀
  先舉個例子來感受下,比如將當前目錄下所有*.nc檔名稱中Sam3字串替換成Stm32,命令如下:
  1. rename -n 's/Sam3/Stm32/' *.nc  /*確認需要重新命名的檔案*/
  2. rename -v 's/Sam3/Stm32/' *.nc  /*執行修改,並列出已重新命名的檔案*/
  整個命令的重點在於Perl語言正則表示式,下一部分將予以較詳細的介紹。

perlexpr引數介紹:Perl正則表示式——三種形式

匹配:m/<regexp>/  (可以省略m,直接寫成/regexp/) 替換:s/<pattern>/<replacement>/ 
轉化:tr/<pattern>/<replacement>/
  rename命令常用到替換和轉化兩種(用匹配也沒意義)。轉換跟替換不同,替換是將replacement整個字串替換pattern字串,而轉換則是用replacement逐個字元替換pattern逐個字元,結果依賴於replacement與pattern字元個數(見下述分析)。
(1)替換 替換表達方式如下[3],還有一系列引數,貌似不怎麼用得著。
  1. 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)轉化 轉化有兩種等價表達方式,如下:
  1. tr/SEARCHLIST/REPLACEMENTLIST/cds
  2. y/SEARCHLIST/REPLACEMENTLIST/cds
cComplement the SEARCHLIST. dDelete found but unreplaced characters. sSquash duplicate replaced characters.
  轉化同替換不同,用REPLACEMENTLIST逐個字元替換SEARCHLIST逐個字元,比如'tr/Sam/Stm/',用S替代S,t替代a,m替代m。結果依賴於兩者字元長短,下面以檔名FastSpiSam3C.nc為例進行說明:
  1. [email protected]:~$ rename -'tr/Sam3/Stm/' FastSpiSam3C.nc /*替換字元短,用最後一個字元m替換3*/
  2. FastSpiSam3C.nc renamed as FtstSpiStmmC.nc
  3. [email protected]:~$ rename -'tr/Sam3/Stm32/' FastSpiSam3C.nc /*替換字元長,多出字元被忽略*/
  4. FastSpiSam3C.nc renamed as FtstSpiStm3C.nc

[ files ]引數介紹:支援萬用字元——三種

?    可替代單個字元

*    可替代多個字元

[charset]    可替代charset集中的任意單個字元
使用萬用字元即可對所有符合條件的檔名進行批量修改。
例項 將所有*.nc檔案中Sam3替換成Stm32
  1. rename -v 's/Sam3/Stm32/' *.nc  /*執行修改,並列出已重新命名的檔案*/
2 去掉檔案字尾名(比如去掉.bak)
  1. rename 's/\.bak$//' *.bak
3 將檔名改為小寫
  1. rename 'y/A-Z/a-z/' *
4 去掉檔名的空格
  1. rename 's/[ ]+//g' *
5 檔案開頭加入字串(比如jelline)
  1. rename 's/^/jelline/' *
6 檔案末尾加入字串(比如jelline) http://blog.chinaunix.net/uid-28458801-id-4205443.html

相關推薦

Ubuntu重新命名檔案

在linux下修改檔案的名字有很多種方法,常用的有mv和rename。 一,mv mv fromfile tofile 如把檔案a.txt得命名為b.txt,可以是mv a.txt b.txt。 mv一次只能重新命名一個檔案,而且,它是移動命令。如果tofi

linux批量重新命名檔案

假設資料夾Data裡有幾個資料資料夾, 每個資料資料夾內有多個數據檔案,該檔名稱格式為: 2014.143.20.49.21.0000.YN.BAS.00.BHE.M.SAC 現想要將這些檔名稱改為BAS.E.SAC, 即取原檔名的幾列重新命名,方法如下: #!/bin/bash #將資料檔

Linux以當前日期重新命名檔案

[email protected]:/home/test/file_2# mv 1 `date "+%Y-%m-%d-%H:%M:%S"` [email protected]:/home/test/file_2# ls 1.c 2018-11-14-18:08:47

Windows用指令碼批量重新命名檔案

1. 我的效果: 2. reference reference:https://blog.csdn.net/txz317/article/details/52326041 在Windows下可以用指令碼批量重新命名檔案,且可以將檔名按指定的字串格式命名,並按序號遞

LinuxShell指令碼實現批量重新命名資料夾,批量重新命名檔案(讓原本繁重的工作變得簡單)

最近接了個專案,具體做什麼都不說了,其中有個工作就是批量更改資料夾,然後批量更改資料夾下的檔名字,一會兒先貼程式碼,再詳細解釋步驟。 下面是我的簡化版的目錄結構,實際上有上百個。 project dir1 dir1.py dir2

Windows的通過命令列批量重新命名檔案

        今天在工作時遇到了一個情況,通過高速掃描器掃描的檔案是以圖片的形式儲存到本地硬碟上的,但是掃描器給圖片命的名就很混亂,並不是我想要的。作為一個強迫症,於是就想到了手動把這些名字改過來。但是這一整個資料夾6、700張圖片,一個一個地F2去重新命名工作了也是蠻嚇人

Ubuntu用rename命令批量重新命名檔案

摘要:   本文介紹rename命令完成重新命名批量檔案語法,介紹了rename用到的Perl的替換和轉化形式,並給出常用正規表示式。最後給出幾個例項。   偶爾會遇到需要重新命名批量檔案,最典型的例子就是數碼相機的相片,在Ubuntu可以用工具Purrr或者PerfixSuffix實現該功能,但重新命名

如何在Debian和Ubuntu重新打包Deb檔案

Copy from https://linux.cn/article-2428-1.html 有時候你在生活中會碰到這樣的問題,你想要修改.deb檔案的部分內容,然後重新打包。不過只有你真正深入瞭解計算機才能完成這樣的黑客技巧。 下面的例子是剛發生在我身上的真實經歷

windows xp 批量重新命名檔案

步驟: 首先,選中要重新命名的所有檔案。 然後,右擊第一個檔案選擇重新命名,例如重新命名為name.txt。 最後,回車那麼其餘檔案自動重新命名為name  (1).txt,name  (2).txt,name  (3).txt......... 注意: @1、如果想讓第一

Linux 批量重新命名檔案的方法

1.使用rename命令 SYNOPSIS rename from to file... from 表示需要替換或者處理的字元,比如檔案的副檔名,檔名. to 表示對from處理之後的結果。 file 表示目標檔案。 [[email protected] tmp]# ls hello_10_201

hdfs複製資料到本地伺服器+本地伺服器複製資料到遠端伺服器+重新命名檔案

1. hdfs複製資料到本地伺服器 hdfs dfs -copyToLocal hdfs://IP地址:8020/user/使用者名稱/資料 /home/使用者名稱/ 這裡使用-copyToLocal 將hdfs資料複製到本地伺服器。 2. 從本地伺服器複製資料到遠端伺服器

如何在 Linux 中批量移動、複製、追加和重新命名檔案

你可能已經知道,我們使用 mv 命令在類 Unix 作業系統中重新命名或者移動檔案和目錄。 但是,mv 命令不支援一次重新命名多個檔案。 不用擔心。 在本教程中,我們將學習使用 Linux 中的 mmv 命令一次重新命名多個檔案。 此命令用於在類 Unix 作業系統中使用標準萬用字元批量移

Ubuntu如何修改檔案或者資料夾的許可權

Ubuntu下如何修改檔案或者資料夾的許可權------chmod的親身測試     具體原理如下:  Linux系統下如何修改文件及資料夾(含子資料夾)許可權,我們來看一下。    &nbs

ubuntu將一個檔案複製到另一個資料夾複製出錯,原因是使用者對資料夾的許可權不夠

情況:在ubuntu系統下,想將一個檔案複製到/usr/local/etc/mini-ndn資料夾下,但是複製出錯,原因是使用者對這個資料夾的許可權不夠. 解決方法:提高使用者的許可權,使用以下程式碼 sudo chmod 777 /usr/local/etc/mini-ndn

python批量重新命名檔案

給三千多張圖片重新命名,只需如下幾行程式碼。cool import os path = "E:/memery/陪你一起成長/" # 獲取該目錄下所有檔案,存入列表中 f = os.listdir(pat

ubuntu 查詢某個檔案的方法

1.whereis 檔案名   特點:快速,但是是模糊查詢,例如 找 #whereis mysql 它會把mysql,mysql.ini,mysql.*所在的目錄都找出來.   2.find / -name 檔案名或資料夾名   特點:準確,但速度慢,消耗資

ubuntu Apache 相關 檔案/目錄/操作

1.Apache 相關 檔案/目錄  Web目錄 : /var/www  安裝目錄 : /etc/apache2  全域性配置 : /etc/apache2/apache2.conf  監聽埠 : /etc/apache2/ports.conf  虛擬主機 : /etc/ap

重新命名檔案之後,svn提交失敗 org.apache.subversion.javahl.ClientException

問題: Illegal target for the requested operation svn: Commit failed (details follow): org.apache.subversion.javahl.ClientException:

虛擬機器Ubuntu搭建Samba檔案訪問伺服器

主機win10+VMware Workstation+ubuntu14.04 1.設定VMware Workstation虛擬機器網路為橋接聯網模式,確保win10與ubuntu14.04相互ping通 在Ubuntu14.04下Alt + Ctrl + T鍵開啟一個終端 執行

不能重新命名檔案及不能刪除檔案和資料夾許可權設定

資料夾-屬性-安全 給相應的使用者 把修改勾去即可  或者 資料夾-屬性-安全-高階-編輯 把刪除和刪除子資料夾及檔案勾去(兩個必須都勾去,勾一個效果一樣)即無法刪除這個資料夾下的檔案和子檔案了,起到保護檔案的作用.  如果許可權是灰色顯示說明被繼承了,勾去繼承即可。