Python學習記錄——Ubuntu(三)文件操作


一.mkdir:創建目錄

  mkdir 目錄名  #創建目錄

  mkdir -p 目錄名1/目錄名2/目錄名3  #創建多層目錄

二.rm:刪除文件(慎用,易引發程序崩潰

1.參數:

(1)rm 文件名   #只能刪除文件,但是不能刪除目錄

(2)rm -i 文件名  #會出現提示

(3)rm -f 文件名  #強制刪除

(4)rm -rf 目錄名  #強制刪除目錄

三.mv:移動或重命名文件/目錄

1.示例:

(1)mv 文件/目錄名 新文件/目錄名  #重命名文件/目錄

(2)mv  文件名 目錄名  #將文件移至目錄下

(3)mv 文件/目錄名 .  #移動至當前目錄

四.cp:復制文件

1.示例:

(1)cp 文件名 新文件名 #在當前目錄復制文件並重新命名

(2)cp 目錄名/ 新目錄名  #注意目錄復制要加/

(3)cp -a 文件名 新文件名  #復制文件,並且保留原有權限和所有者

五.>:重定向(寫文件)  

(1)>   重定向,如果的文件存在,則覆蓋文件內容,文件不存在時創建文件

(2)>> 重定向,如果的文件存在,則向文件追加內容,文件不存在時創建文件

(3)1>  標准正確輸出,同上覆蓋

(4)1>> 標准正確輸出,同上追加 

(5)2> 標准錯誤輸出,同上覆蓋

(6)2>> 標准錯誤輸出,同上追加

(7)&> 標准正確輸出和標准錯誤輸出,同上覆蓋

eg:cat 123.txt 1>a 2>b  #如果正確輸出則a有內容b沒有

六、文件屬性修改

1.chmod:修改文件權限

(1)chmod u(代表user用戶)/g(代表group用戶組)/o(代表others其他人)/a(代表所有)=rwx(讀寫執行的權限,沒有的權限用-代替)./文件名  #修改文件權限

(2)chmod  u(代表user用戶)/g(代表group用戶組)/o(代表others其他人)/a(代表所有)+/- rwx(讀寫執行的權限,沒有的權限不寫即可)./文件名  #可用加/減的方式修改權限

(3)chmod 對應三位數字 ./文件名  #修改文件權限

(4)也可以用數字代表權限:r:4,w:2,x:1     rwx:7,rw:6,rx:5

2.chown:修改文件所有者和所有組

(1)chown 名字 文件名  #更改所有者

(2)chown :名字 文件名  #更改所有組

(3)chown 名字:名字 文件名  #更改所有者和所有組

七.ls:查看文件信息

1.參數:

(1)ls  #查看當前目錄下可見的文件 

(2)ls -a  #查看當前目錄下所有文件,若文件前帶.則為隱藏文件;其中.和..分別表示當前目錄和父目錄

(3)ls -l #顯示所有文件及詳細信息

(4)ls -l ./文件名  #顯示該文件詳細信息

  詳細信息顯示格式為:

  文件類型(-為普通文件,d為目錄文件,b為塊設備文件,c為字符設備文件,l為鏈接文件(例如快捷方式),p為管道文件,s為socket文件) 

    例如:-rwxrwxrwx,-為文件類型,r是否可讀(目錄中對應是否可以讀取該目錄下的文件名),w是否可寫(目錄中對應是否可以在目錄下創建和修改文件),x是否可執行(目錄中對應是否可以被搜索/能否進入該目錄)

    3個一組,分別表示用戶,用戶組,其他人的文件操作權限

    ./執行一個文件時,用戶對該文件必須有x權限

  數字 

  所有者 

  屬於的用戶組

  文件大小(默認是字節為單位的,可用ls -lh 改為用KB做單位,目錄默認為4096字節)

  修改日期

  文件名

(4)ls -lt #附加以時間排降序(若t后追加r,可改為升序)

(5)ls -R  #遍歷所有文件目錄

八.常用文件操作命令

1.更改當前目錄:

(1)cd+地址 #更改目錄至制定地址,如cd /home ;cd ~/桌面

(2)cd ..  #返回當前目錄的上一級目錄

(3)cd -  #返回到當前目錄之前打開的目錄

(4)cd #回用戶家目錄

2.touch 文件名  #將文件時間修改成當前時間,例如統一多個文件的時間以便合並

3.cat 文件名  #查看文件內容

  cat -s 文件名  #將多個空行合並成一個空行,但若行內有空格,則該行不被合並

4.tac 文件名  #從下往上輸出文件內容

5.sort  #排序

(1)sort -r  #反向排序

(2)sort -n  #使用純數字排序

(3)sort -f  #忽略大小寫

(4)sort -t  分隔符   #指定分隔符

6.uniq  #忽略或報告重復行

  uniq -c  #進行計數

  uniq -u  #不顯示重復行

  uniq -i  #不區分大小寫

7.cut #提取文本列

  cut -d 分隔符 -f 列數

  cut -c  #以字符為單位提取  如:cut -c 1,5提取第一和第五個字,cut -c 1-5提取第一到第五個字

8.tee  #讀取標准輸入的數據,並將其內容輸出成文件

9.history  #列出歷史命令

  history number  #顯示最近多少條命令

  history !number  #執行第幾條命令

10.more/less 文件名  #分頁顯示,空格顯示下一頁,回車顯示下一行,b回退,q退出

11head/tail 文件名  #顯示前/后10行文本

  tail -f 文件名  #實時監控文件變化,可用在日志文件監控上

12.which 命令  #查命令在什么位置

13.stat文件名  #用於查看文件信息:

14.pwd   #查看當前目錄

  1. alias #用於給命令起別名

  alias 別名='原名'  #如:alias la='ls -A'

  如果需要別名永久生效,需要保存到 .bashrc 文件

16.source 文件名  #在當前bash環境下讀取並執行FileName中的命令,該filename文件可以無"執行權限"

17.echo  #可用於在屏幕上打印文件內容,echo -n不換行輸出 

18.df -Th  #以能顯示的最大單位顯示文件系統類型

18.du -s(如果后面是目錄,只顯示一層) -h(以能顯示的最大單位顯示) 目錄名  #顯示目錄的大小

九.文件查找

1.locate:

(1)locate /etc/sh    # 搜索路徑中含有/etc/sh的文件。

(2)locate ~/a    # 搜索用戶主目錄下,所有以a開頭的文件。

(3)locate -i  #忽略大小寫。

  locate查找文件時,如果數據庫未及時更新,則無法找到文件,可使用sudo updatedb 命令手動更新數據庫

2.find:

(1)使用方法: find path -option [-print ] [ -exec -ok command ] {} \;

(2)根據文件名查找:

  find 目錄 -name 文件名   #在目錄里面搜索某文件名的文件

  find /home -name "*.txt"  #在家目錄里搜索txt后綴的文件

  find /home -iname "*.txt"   #忽略大小寫

(3)根據文件類型查找:

  find 目錄 -type 類型參數    f 普通文件  l 符號連接  d 目錄  c 字符設備  b 塊設備  s 套接字  p Fifo

(4)根據目錄深度查找:

  find . -maxdepth 3 -type f # 從當前目錄查找,最大深度為3

  find . -mindepth 2 -type f # 最小深度為2

(5)根據文件的權限或者大小名字類型進行查找:

  find 目錄 -type f -size (+|-)文件大小 # +表示大於 -表示小於

  b —— 塊(512字節) c —— 字節 w —— 字(2字節) k —— 千字節 M —— 兆字節 G —— 吉字節

(6)按照時間查找:

  -atime(+|-)n # 此選項代表查找出n天以前被讀取過的文件。

  -mtime(+|-)n # 此選項代表查找出n天以前文件內容發生改變的文件。

  -ctime(+|-)n # 此選項代表查找出n天以前的文件的屬性發生改變的文件。

  -newer file # 此選項代表查找出所有比file新的文件。

  -newer file1 ! –newer file2 # 此選項代表查找比file1文件時間新但是沒有file2時間新的文件。

  注意:

    n為數字,如果前面沒有+或者-號,代表的是查找出n天以前的,但是只是一天之內的范圍內發生變化的文件。

    如果n前面有+號,則代表查找距離n天之前的發生變化的文件。如果是減號,則代表查找距離n天之內的所有發生變化的文件。

    -newer file1 ! –newer file2中的!是邏輯非運算符

(7)按照用戶/權限查找: 

  -user 用戶名:根據文件的屬主名查找文件。

  -group 組名:根據文件的屬組名查找文件。

  -uid n:根據文件屬主的UID進行查找文件。

  -gid n:根據文件屬組的GID進行查找文件。

  -nouser:查詢文件屬主在/etc/passwd文件中不存在的文件。

  -nogroup:查詢文件屬組在/etc/group文件中不存在的文件

  -perm 777: 查詢權限為777的文件

(8)查找時指定多個條件:

  -o:邏輯或,兩個條件只要滿足一個即可。

  -a:邏輯與,兩個條件必須同時滿足。

  find /etc -size +2M -a -size -10M

(9)對查找結果進行處理:

  -exec shell命令 {} \;

  -ok shell命令 {} \; (推薦)

  其中-exec就是代表要執行shell命令,后面加的是shell指令,再后面的“{}”表示的是要對前面查詢到的結果進行查詢,最后的“\;”表示命令結束。需要注意的是“{}”和“\”之間是要有空格的。而-ok選項與-exec的唯一區別就是它在執行shell命令的時候會事先進行詢問

  -print選項是將結果顯示在標准輸入上

十.gedit:程序編寫終端

  在文件開頭寫#! /usr/bin/env python3 #用於指定解釋器為python3,這樣指定以后文件可以以./文件名 方式執行

十一.tar:壓縮文件

1.參數:

(1)-c :建立一個壓縮文件的參數指令(create 的意思);

(2)-x :解開一個壓縮文件的參數指令

(3)-t :查看 tarfile 里面的文件

   特別注意 c/x/t 同時僅能存在一個,因為不可能同時壓縮與解壓縮。

(4)-z :是否需要用 gzip 壓縮

(5)-j :是否需要用 bzip2 壓縮(壓縮率更高)

(6)-v :壓縮的過程中顯示文件,這個常用,但不建議用在背景執行過程

(7)-f :使用檔名,在 f 之后要立即接文件名

(8)-p :使用原文件的原來屬性(屬性不會依據使用者而變)

(9)-P :可以使用絕對路徑來壓縮

(10)-N :比后面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的文件中

2.示例:

(1)將當前目錄下所有.txt文件打包並壓縮歸檔到文件:this.tar.gz tar czvf this.tar.gz ./*.txt

(2)將當前目錄下的this.tar.gz中的文件解壓到當前目錄 tar xzvf this.tar.gz ./

(3)將整個 /etc 目錄下的文件全部打包成為 /tmp/etc.tar

  tar -cvf /tmp/etc.tar /etc  # 僅打包,不壓縮

  tar -zcvf /tmp/etc.tar.gz /etc  # 打包后,以 gzip 壓縮

  tar -jcvf /tmp/etc.tar.bz2 /etc # 打包后,以 bzip2 壓縮

(4)解壓文件

  tar -xf a.tar.gz

  tar -xf a.tar.gz -C /tmp # 指定解包路徑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM