檔案管理基礎命令之二

threebb發表於2023-01-09

ls:list ,列出目錄內容


      用法:ls [-aAdhl]  //ls 的引數很多,這裡介紹常用的幾種


      不加引數,直接 ls ,可列出目錄的內容,包括檔案和子目錄的名稱。


      -a :列出全部的檔案,包括隱藏的目錄和隱藏的檔案(以.開頭的檔案) 


      -A :列出全部的檔案,包括隱藏的目錄和檔案(但不包括 . 與 .. 這兩個目錄)


      -d :僅列出目錄本身,而不是列出目錄內的檔案資料


      -h :將檔案容量以人類較易讀的方式(例如GB、KB等) 列出來


      -l  :列出檔案並顯示檔案的屬性和許可權等資訊


 


 cp:copy  複製


 


      用法:cp  [-adfilprsu] 原始檔 目標


 


      不加引數,直接 cp 原始檔 目標 (目標可以是檔名也可以是目錄名)


 


      -a :儘可能將檔案狀態、許可權等資料都照原狀予以複製。


 


      -r :若 source 中含有目錄名,則將目錄下之檔案亦皆依序複製至目的地。


 


      -f :若目的地已經有相同檔名的檔案存在,則在複製前先予以刪除再行復制。


 


      在預設的條件中,cp的原始檔與目的檔案的許可權是不同的,目的檔案的所有者會是執行命令的使用者。


 


      -u :差異複製,常用在備份裡面




 


 


附:(1)


  rename frompart  topart filename   或者  rename 's/frompart/topart/' filename

  如把檔案a.txt得命名為b.txt,可以是rename 'a' 'b' a.txt  (這個沒有試過,看網上別人說的,是這樣子的。)還可以是:rename 's/^a/b/' a.txt  在有的系統之上,用前面的那句可以透過,在有的系統之上,用後面的這個可以透過。兩個不一樣,一個是C的,一個是perl的。明顯看出,後面這條是正規表示式的寫法。

1.

2.

具體採用哪一種方式,可以man rename,在手冊頁的最後一行看版本。由於我使用的系統rename的版本是Perl的,所以我只能採用後面的這一種方式。

  rename 強大 的地方在於,你可以使用*,?等,對所有符合條件的檔名進行批次修改。而你在使用mv的時候,只能採用寫指令碼,用迴圈的方式來解決(2)

1.

2.

$ ls *.oldreport.old  schedule.old  stats.old  this.old$ rename 's/old/new/' *.old$ ls *.newreport.new  schedule.new  stats.old  this.new

1.

由以上結果可見,透過這個簡單的一條命令的操作,我們可以將當前目錄下所有 .old 結尾的檔案重新命名為 .new 結尾的檔案,簡單高效!


如果你認為那是 rename 命令的全部那就是圖樣圖森破了。rename 命令並不侷限於更改副檔名,也可以更改檔名中的任意字串。比如,我們如果想要將名為 report.* 的檔案更改為review.* ,則可以使用以下命令:


$ rename 's/report/review/' *

1.

注意,正規表示式中提供的規則可以更改檔名的任意部分,無論是檔名還是副檔名。


$ rename 's/123/124/' *$ ls *124*status.124  report124.txt

1.

如果你想互動性地使用 rename 進行重新命名,以方便檢視都做了哪些更改,從而避免錯誤修改,可以使用 -v 選項。


$ rename -v 's/123/124/' *status.123 renamed as status.124report123.txt renamed as report124.txt

1.

-v 選項是要改一條文字時,給你預覽一下,改一下條時,再給你預覽一下,而這樣效率比較低。如果我想要整體性地預覽,當確認沒有問題時一次性全部修改,怎麼操作呢?


我們可以使用 -n 或 --nono 選項讓 rename 命令實現上面的需求。


$ rename -n 's/old/save/' *rename(logger.man-old, logger.man-save)rename(lyrics.txt-old, lyrics.txt-save)rename(olderfile-, saveerfile-)rename(oldfile, savefile)rename(review.old, review.save)rename(schedule.old, schedule.save)rename(stats.old, stats.save)rename(this.old, this.save)

1.

如果對上面的這些更改覺得沒問題,那麼可以去掉 -n 選項來正式修改檔名。


注意,rename 正規表示式中的 . 不是一般的英文句號,而是指匹配任意字元的萬用字元,我們可以參考下面的命令來理解。


$ rename -n 's/.old/.save/' *rename(logger.man-old, logger.man.save)rename(lyrics.txt-old, lyrics.txt.save)rename(review.old, review.save)rename(schedule.old, schedule.save)rename(stats.old, stats.save)rename(this.old, this.save)

1.

以上例子裡,不僅 .old 被修改為 .save ,-old 同樣也被改為 .save 。


如果你想讓 . 就是表示一個句號,需要加一個 \ 轉義符號,即使用 \. 表示英文句號 .


$ rename -n 's/\.old/\.save/' *rename(review.old, review.save)rename(schedule.old, schedule.save)rename(stats.old, stats.save)rename(this.old, this.save)

1.

若要將大寫字母都更改為小寫字母,我們可以使用以下命令。


$ rename -n 'y/A-Z/a-z/' W*rename(WARNING_SIGN.pdf, warning_sign.pdf)rename(Will_Gardner_buttons.pdf, will_gardner_buttons.pdf)rename(Wingding_Invites.pdf, wingding_invites.pdf)rename(WOW-buttons.pdf, wow-buttons.pdf)

1.

其中,使用 -n 預覽將要進行的更改,y 表示更改大小寫。


在上面的示例中,我們將所有以大寫字母 W 開頭的檔名全部改為小寫字母。


(3)FIND 命令


1.使用當前目錄中的名稱查詢檔案

在當前工作目錄中查詢名稱為test.c的所有檔案。 




 


2.在主目錄下查詢檔案

查詢/ home目錄下的所有檔案,名稱為test。 





(上文中的前面兩個find沒有許可權)


3.使用名稱和忽略案例查詢檔案

找到名稱為test的所有檔案,並在/ home目錄中同時包含大寫和小寫字母。 




 


4.使用名稱查詢目錄

在/目錄中查詢名稱為test的所有目錄。 




 


5.使用名稱查詢PHP檔案

在當前工作目錄中查詢名為test.PHP的所有PHP檔案。 




 


6.查詢目錄中的所有PHP檔案

查詢目錄中的所有php檔案。 




 


第二部分 - 根據他們的許可權查詢檔案

7.查詢777個許可權的檔案

查詢許可權為777的所有檔案 




 


8.查詢沒有777許可權的檔案

查詢所有檔案未經許可777。 




 


9.查詢具有644個許可權的SGID檔案

查詢許可權設定為644的所有SGID位檔案。 




 


10.找到具有551許可權的粘滯位檔案

查詢許可權為551的所有Sticky Bit設定檔案。 




 


11.查詢SUID檔案

查詢所有SUID集檔案。 




 


12.查詢SGID檔案

查詢所有SGID設定檔案 




 


13.查詢只讀檔案

查詢所有隻讀檔案。 




 


14.查詢可執行檔案

查詢所有可執行檔案。 




 


15.找到777個許可權和Chmod到644的檔案

查詢所有777個許可權檔案,並使用chmod命令將許可權設定為644 




 


16.找到具有777個許可權的目錄和Chmod到755

查詢所有777個許可權目錄,並使用chmod命令將許可權設定為755。 




 


17.查詢並刪除單個檔案

找到一個名為test.c的檔案並將其刪除 




 


18.查詢並刪除多個檔案

查詢和刪除多個檔案,如.mp3或.txt,然後使用。 




 


19.查詢所有空檔案

在特定路徑下查詢所有空檔案。 




 


20.查詢所有空目錄

將特定路徑下的所有空目錄歸檔。 


 


21.檔案所有隱藏檔案

要查詢所有隱藏的檔案,請使用以下命令。 




 


第三部分 - 基於所有者和組的搜尋檔案

22.查詢基於使用者的單個檔案

在所有者root的/ root目錄下查詢名為test.c的所有或單個檔案。 




 


23.查詢基於使用者的所有檔案

查詢~目錄下屬於使用者neil的所有檔案。 




 


24.查詢基於組的所有檔案

查詢/ home目錄下屬於Group Developer的所有檔案。 




 


25.查詢使用者的特定檔案

查詢~目錄下的使用者neil的所有.txt檔案 




 


第四部分 - 根據日期和時間查詢檔案和目錄

26.查詢最近50天修改的檔案

查詢50天后修改的所有檔案。 




 


27.查詢最近50天訪問的檔案

查詢50天后訪問的所有檔案。 




 


28.查詢最後50-100天修改的檔案

查詢所有被修改超過50天以及少於100天的檔案。 




 


29.在過去1小時內查詢更改的檔案

查詢最近1小時內更改的所有檔案 




 


30.在最近1小時內查詢修改的檔案

查詢最近1小時內修改的所有檔案。 




 


31.查詢最近1小時內訪問的檔案

查詢最近1小時內訪問的所有檔案。 




 


第五部分 - 根據大小查詢檔案和目錄

32.找到50MB的檔案

要找到所有50MB的檔案,請使用。 




 


33.查詢大小在50MB到100MB之間

找到大於50MB且小於100MB的所有檔案。 




 


34.查詢並刪除100MB的檔案

查詢所有100MB檔案並使用一個命令刪除它們。 




 


35.查詢特定檔案並刪除

查詢超過10MB的所有.mp3檔案,並使用一個命令刪除它們 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70025742/viewspace-2931454/,如需轉載,請註明出處,否則將追究法律責任。

相關文章