linux下rename命令用法詳解(重命名文件)

本文介紹了linux系統中rename命令的用法,用來修改文件名、重命名文件,批量重命名文件rename是最好的選擇,須要的朋友參考下。php


在linux系統中重命名文件,常常用到mv命令,批量重命名文件rename是最好的選擇。
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_0一、a_02,若須要將文件名中的a替換爲b,其餘部分保持不變,則
1) 若當前位於test目錄下,則執行 
 html

rename a b *linux

2) 若當前位於test的父目錄,則執行
 正則表達式

rename a b test/*ide

Perl語言版本格式:rename 's/原字符串/新字符串/' 文件名
樣例2:題目如樣例1,則
1) 若當前位於test目錄下,則執行 
 ui

rename 's/a/b/' *spa

2) 若當前位於test的父目錄,則執行
 htm

rename 's/a/b' test/*ci

腳本實現方法:
 字符串

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

linux的rename命令
linux正則表達式extensiondoshtml
不一樣於Dos下的rename命令,linux下的rename命令功能很是強大。
 

#man rename
NAME
       rename - Rename files
SYNOPSIS
       rename from to file...
DESCRIPTION
       rename will rename the specified files by replacing the first occurrence of from in their name by to.
       For example, given the files foo1, ..., foo9, foo10, ..., foo278, the commands
              rename foo foo0 foo?
              rename foo foo0 foo??
       will turn them into foo001, ..., foo009, foo010, ..., foo278.
       And
              rename .htm .html *.htm
       will fix the extension of your html files.
 

從上面能夠看到:
1. rename命令是三個參數
2. rename命令支持通配符進行批量重命名
3. rename命令會不會支持正則表達式
 
rename的參數
 
rename命令的格式:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
 
第一個參數:被替換掉的字符串
第二個參數:替換成的字符串
第三個參數:匹配要替換的文件模式
 
例子:rename  main1.c main.c main1.c  將main1.c重命名爲main.c
 
rename支持通配符
?    可替代單個字符
*    可替代多個字符
[charset]    可替代charset集中的任意單個字符
 
例子:文件夾中有這些文件foo1, ..., foo9, foo10, ..., foo278,
 

若是使用      rename foo foo0 foo?
會把foo1到foo9的文件重命名爲foo01到foo09,重命名的文件只是有4個字符長度名稱的文件,文件名中的foo被替換爲foo0。
若是使用      rename foo foo0 foo??
foo01到foo99的全部文件都被重命名爲foo001到foo099,只重命名5個字符長度名稱的文件,文件名中的foo被替換爲foo0。
若是使用      rename foo foo0 foo*
foo001到foo278的全部文件都被重命名爲foo0001到foo0278,全部以foo開頭的文件都被重命名。
若是使用      rename foo0 foo foo0[2]*
從foo0200到foo0278的全部文件都被重命名爲foo200到foo278,文件名中的foo0被替換爲foo。
 

rename支持正則表達式
 
例子:
 

字母的替換rename "s/AA/aa/" *  //把文件名中的AA替換成aa修改文件的後綴rename "s//.html//.php/" *     //把.html 後綴的改爲 .php後綴批量添加文件後綴rename "s/$//.txt/" * //把全部的文件名都以txt結尾批量刪除文件名rename "s//.txt//" * //把全部以.txt結尾的文件名的.txt刪掉

相關文章
相關標籤/搜索