天天看點

Linux檔案夾/檔案基本操作

删除目錄、檔案 rm(remove)

功能說明:删除檔案或目錄。

語  法:rm [-dfirv][–help][–version][檔案或目錄…]

補充說明:執行rm指令可删除檔案或目錄,如欲删除目錄必須加上參數”-r”,否則預設僅會删除檔案。

參  數:

 -d或–directory  直接把欲删除的目錄的硬連接配接資料删成0,删除該目錄。

 -f或–force  強制删除檔案或目錄。

 -i或–interactive  删除既有檔案或目錄之前先詢問使用者。

 -r或-R或–recursive  遞歸處理,将指定目錄下的所有檔案及子目錄一并處理。

 -v或–verbose  顯示指令執行過程。

-删除檔案夾及檔案執行個體:

#rm -rf /var/log/httpd/access
           

将會删除/var/log/httpd/access目錄以及其下所有檔案、檔案夾

需要提醒的是:使用這個rm -rf的時候一定要格外小心,linux沒有資源回收筒的

2、建立檔案夾

建立目錄:mkdir (make directories)

功能說明:建立目錄

語  法:mkdir [-p][–help][–version][-m <目錄屬性>][目錄名稱]

補充說明:mkdir可建立目錄并同時設定目錄的權限。

參  數:

-m<目錄屬性>或–mode<目錄屬性> 建立目錄時同時設定目錄的權限。

-p或–parents 若所要建立目錄的上層目錄目前尚未建立,則會一并建立上層目錄。

-添加檔案夾執行個體:

3、建立檔案 touch

功能說明:改變檔案或目錄時間。

語  法:touch [-acfm][-d <日期時間>][-r <參考檔案或目 錄>][-t <日期時間>] [–help]   [–version][檔案或目錄…] 或 touch [-acfm][–help][–version][日期時 間][檔案或目錄…]

補充說明:使用touch指令可更改檔案或目錄的日期時間,包括存取時間和更改時間。

參  數:

 -a或–time=atime或–time=access或–time=use  隻更改存取時間。

 -c或–no-create  不建立任何檔案。

 -d<時間日期>  使用指定的日期時間,而非現在的時間。

 -f  此參數将忽略不予處理,僅負責解決BSD版本touch指令的相容性問題。

 -m或–time=mtime或–time=modify  隻更改變動時間。

 -r<參考檔案或目錄>  把指定檔案或目錄的日期時間,統統設成和參考檔案或目錄的日期時間相同。

 -t<日期時間>  使用指定的日期時間,而非現在的時間。

 

建立檔案執行個體

(注:Linux下沒有檔案字尾名區分檔案類型之說,系統檔案類型隻有可執行檔案和不可執行檔案)

Linux檔案的複制、删除和移動指令使用說明,需要的朋友可以參考下。

4、cp複制指令

cp指令複制檔案從一個位置到另一位置。如果目的地檔案存在,将覆複寫該檔案; 如果目的地目錄存在,檔案将複制到該目錄下 (目錄不會被複寫)。

文法:

#cp [指令開關]… SOURCE DEST 
#cp [OPTIONS]… SOURCE… DIRECTORY 
#cp [OPTIONS]… –target-directory=DIRECTORY SOURCE… 
           

指令開關:

-a 等同于 -dpR.

–backup[=CONTROL] 對每個存在的目标檔案制作備份。

-b 如同 –backup,但是不接受參數。

-f 如果存在的目标檔案不能被寫操作打開,删除它并且再試一次。

-p 等同于 –preserve=mode,ownership,timestamps (保留模式,所有者和時間戳資訊)。

–preserve[=ATTR_LIST] 保留指定的屬性 (預設屬性:模式,所有者,時間戳)和安全配置, 如果可能的話添加附加屬性:連接配接,所有。

–no-preserve=ATTR_LIST 不保留指定的屬性。

–parents 在目錄下添加源路徑。

示例:

C複制兩個檔案:

上述cp指令複制檔案file1.php 的内容到檔案file2.php中。

備份拷貝的檔案:

cp -b file1.php file2.php建立檔案file1.php的帶着符号 ‘~’的備份檔案file2.php~。

複制檔案夾和子檔案夾:

cp -R scripts scripts1上面的 cp 指令從 scripts 複制檔案夾和子檔案夾到 scripts1。

5、mv移動/重命名指令

mv 指令是move的縮寫。 用它從一個目錄到一個目錄移動/重命名檔案。 mv指令不同于cp指令,mv指令是完全的從源移動檔案并且把檔案移動到指定的目錄,這裡cp指令隻是複制檔案的内容從一個檔案到另一個檔案。

文法:

mv [-f] [-i] 原名稱 新名稱

指令開關:

-f 在覆寫前不提示(equivalent to相當于 –reply=yes). mv -f 将在沒有提示的情況下移動檔案(多個檔案),即使它将複寫存在的目标檔案。

-i 在複寫另一檔案前做出提示

示例:

這個指令重命名file1.txt檔案的名字為file2.txt。

To move a directory

移動一個目錄

在上述指令中,如果tmp目錄已經存在,mv指令将移動hscripts檔案夾/目錄下的所有檔案,目錄和子目錄到tmp目錄。 如果沒有tmp目錄,它将重命名 hscripts目錄為tmp目錄。

移動多個檔案/更多檔案夾到另一目錄

這個指令移動目前目錄的file1.txt檔案和tmp檔案夾/目錄的file2.txt檔案到newdir目錄。

rename重命名

在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_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 namerename‘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删掉

繼續閱讀