Linux之系统文件管理
生活随笔
收集整理的這篇文章主要介紹了
Linux之系统文件管理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.創(chuàng)建/復制/移動/刪除
(1)文件創(chuàng)建命令touch
# touch file ? ? #無則創(chuàng)建,有則修改創(chuàng)建時間 # touch file2 file3 #創(chuàng)建file2和file3兩個文件 # touch /home/zhangsan/test file4 ? #指定目錄創(chuàng)建文件file4 # touch {a,b,c} #創(chuàng)建a,b,c三個文件 # touch {1..10} #創(chuàng)建1-10一共10個文件 # touch {a..z} ? ? #創(chuàng)建a-z 26個文件(2)目錄創(chuàng)建命令mkdir
#選項: -v顯示詳細信息 -p 遞歸創(chuàng)建目錄 ? # mkdir dir1 # mkdir /home/zhangsan/aaa /home/zhangsan/bbb ? # mkdir -v /home/zhangsan/{dir3,dir4} # mkdir -pv /home/zhangsan/dir5/dir6 -------------------------------- # mkdir -pv /home/{zhangsan/{qqq,www},lisi/eee} ? ? #相當于創(chuàng)建/home/zhangsan/qqq,/home/zhangsan/www,/home/lisi/eee三個文件夾(3)以樹狀顯示目錄結(jié)構(gòu)tree
# yum install -y tree #不安裝軟件則無法執(zhí)行該命令 ? # mkdir test2 # cd test2 # touch file_{1,10}.txt # tree test2 test2 ├── file_10.txt ├── file_1.txt ├── file_2.txt ├── file_3.txt ├── file_4.txt ├── file_5.txt ├── file_6.txt ├── file_7.txt ├── file_8.txt └── file_9.txt(4)復制cp
#選項: -v:詳細顯示命令執(zhí)行的操作 -r: 遞歸處理目錄與子目錄 -p: 保留源文件或目錄的屬性 ? # cp file /tmp/file_copy # cp name /tmp/name ? ? ? ? #不修改名稱 # cp file /tmp/ ? ? ? ? ? ? #不修改名稱 # cp -p file /tmp/file_p ? #-p保持原文件或目錄的屬性 # cp -r /etc/ /tmp/ ? ? ? #復制目錄需要使用-r參數(shù), 遞歸復制 # cp -rv /etc/hosts /etc/hostname /tmp #拷貝多個文件至一個目錄 # cp -rv /etc/{hosts,hosts.bak} ? #將/etc/hosts拷貝到/etc/hosts.bak # cp -rv /etc/hosts{,-org} ? ? ? ? ? #將/etc/hosts拷貝到/etc/hosts-org(5)移動mv
# mv file file1 ? ? ? ? ? ? #原地移動算改名 # mv file1 /tmp/ ? ? ? ? ? #移動文件至tmp目錄 # mv /tmp/file1 ./ ? ? ? ? #移動tmp目錄的文件至當前目錄 # mv dir/ /tmp/ ? ? ? ? ? ? #移動目錄至/tmp目錄下 ? # touch file{1..3} # mv file1 file2 file3 /opt/ ? #移動多個文件或至同一個目錄 ? # mkdir dir{1..3} # mv dir1/ dir2/ dir3/ /opt ? ? #移動多個目錄至同一個目錄(6)刪除rm
#選項:-r: 遞歸 -f: 強制刪除 -v: 詳細過程 # rm file.txt ? ? #刪除文件, 默認rm存在alias別名,rm -i所以會提醒是否刪除文件 # rm -f file.txt ? #刪除文件, 不提醒 -------------------------------- # rm -r dir/ ? ? ? #遞歸刪除目錄,會提示 # rm -rf dir/ ? ? ? #強制刪除目錄,不提醒(慎用) -------------------------------- #1.rm刪除示例 # mkdir /home/dir10 # touch /home/dir10/{file2,file3,.file4} # rm -f /home/dir10/* //不包括隱藏文件 # ls /home/dir10/ -a -------------------------------- #2.rm刪除示例2 # touch file{1..10} # touch {1..10}.pdf # rm -rf file* # rm -rf *.pdf2.查看文件內(nèi)容
#------cat # cp /etc/passwd ./pass # cat pass ? ? #正常查看文件方式 # cat -n pass ? #-n顯示文件有多少行 # cat -A pass ? #查看文件的特殊符號,比如文件中存在tab鍵 # tac pass ? ? #倒序查看文件 ? #------less、more # less /etc/services ? #使用光標上下翻動,空格進行翻頁,q退出 # more /etc/services ? #使用回車上下翻動,空格進行翻頁,q退出 ? #------head # head pass ? ? #查看頭部內(nèi)容,默認前十行 # head -n5 pass #查看頭部5行,使用-n指定 ? #------tail # tail pass # tail -20 /var/log/secure # tail -f /var/log/messages #-f查看文件尾部的變化 # tailf /var/log/messages ? #查看文件尾部的變化 ? #------grep過濾文件內(nèi)容 # grep "^root" pass ? ? #匹配以root開頭的行 # grep "bash$" pass ? ? #匹配以bash結(jié)尾的行 # grep -i "ftp" pass ? #忽略大小寫匹配 # grep -Ei "sync$|ftp" pass ? #匹配文件中包含sync結(jié)尾或ftp字符串 # grep -n -A 2 "Failed" /var/log/secure #匹配/var/log/secure文件中Failed字符串,并打印它的下2行 # grep -n -B 2 "Failed" /var/log/secure #匹配/var/log/secure文件中Failed字符串,并打印它的上2行 # grep -n -C 2 "Failed" /var/log/secure #匹配/var/log/secure文件中Failed字符串,并打印它的上下2行3.聯(lián)網(wǎng)下載和文件上傳下載
(1)聯(lián)網(wǎng)下載
#選項: -O: 指定下載地址 # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ? #選項: -o: 指定下載地址 # curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo(2)上傳下載
# yum install lrzsz -y #不安裝軟件則無法執(zhí)行該命令 ? # rz ? ? ? ? ? #只能上傳文件文件上傳 # sz /path/file #只能下載文件4.文件或命令查找
(1)文件查找
# yum install -y mlocate #不安裝軟件則無法執(zhí)行該命令 ? 安裝完之后如果還無法執(zhí)行,出現(xiàn)如下信息:locate: 無法執(zhí)行 stat () `/var/lib/mlocate/mlocate.db' 再執(zhí)行如下命令即可: # updatedb ? # locate /etc/sh ? ? ? #搜索etc目錄下所有以sh開頭的文件 # locate -i /etc/sh ? #搜索etc目錄下,所有以sh開頭的文件,忽略大小寫(2)命令查找
# which ls #查找ls命令的絕對路徑 ? # whereis ls ? ? ? //查找命令的路徑、幫助手冊、等 # whereis -b ls ? //僅顯示命令所在的路徑 ? # type -a ls ? ? ? #查看命令的絕對路徑(包括別名)5.字符處理命令
(1)sort排序
sort [OPTION]... [FILE]... #選項 # -r:倒序 # -n:按數(shù)字排序 # -t:指定分隔符(默認空格) # -k:指定第幾列, 指定幾列幾字符(指定1,1 3.1,3.3) ? #1.首先創(chuàng)建一個文件,寫入一寫無序的內(nèi)容 [root@yfy ~]# cat >> file.txt <<EOF b:3 c:2 a:4 e:5 d:1 f:11 EOF ? #2.使用sort下面對輸出的內(nèi)容進行排序 [root@yfy ~]# sort file.txt a:4 b:3 c:2 d:1 e:5 f:11 ? #結(jié)果并不是按照數(shù)字排序,而是按字母排序。 #可以使用-t指定分隔符, 使用-k指定需要排序的列。 [root@yfy ~]# sort -t ":" -k2 file.txt d:1 f:11 #第二行為什么是11?不應該按照順序排列? c:2 b:3 a:4 e:5 ? #按照排序的方式, 只會看到第一個字符,11的第一個字符是1, 按照字符來排序確實比2小。 #如果想要按照數(shù)字的方式進行排序, 需要使用 -n參數(shù)。 [root@yfy ~]# sort -t ":" -n -k2 file.txt d:1 c:2 b:3 a:4 e:5 f:11案例:對如下內(nèi)容進行排序
[root@yfy ~]$ cat >test.txt <<EOF > 192.168.3.1 00:0F:AF:81:19:1F > 192.168.3.2 00:0F:AF:85:6C:25 > 192.168.3.3 00:0F:AF:85:70:42 > 192.168.2.20 00:0F:AF:85:55:DE > 192.168.2.21 00:0F:AF:85:6C:09 > 192.168.2.22 00:0F:AF:85:5C:41 > 192.168.0.151 00:0F:AF:85:6C:F6 > 192.168.0.152 00:0F:AF:83:1F:65 > 192.168.0.153 00:0F:AF:85:70:03 > 192.168.1.10 00:30:15:A2:3B:B6 > 192.168.1.11 00:30:15:A3:23:B7 > 192.168.1.12 00:30:15:A2:3A:A1 > 192.168.1.1 00:0F:AF:81:19:1F > 192.168.2.2 00:0F:AF:85:6C:25 > 192.168.3.3 00:0F:AF:85:70:42 > 192.168.2.20 00:0F:AF:85:55:DE > 192.168.1.21 00:0F:AF:85:6C:09 > 192.168.2.22 00:0F:AF:85:5C:41 > 192.168.0.151 00:0F:AF:85:6C:F6 > 192.168.1.152 00:0F:AF:83:1F:65 > 192.168.0.153 00:0F:AF:85:70:03 > 192.168.3.10 00:30:15:A2:3B:B6 > 192.168.1.11 00:30:15:A3:23:B7 > 192.168.3.12 00:30:15:A2:3A:A1 > EOF按ip地址進行排序,因為前兩個ip地址默認是192.168,所以從第三列開始排,第三列如果一樣,則按第四列排。
第三列排第1個字符,第四列排第1到第3個字符,且是按數(shù)字進行排序
[root@yfy ~]$ sort -t. -k3.1,3.1n -k4.1,4.3n test.txt 192.168.0.151 00:0F:AF:85:6C:F6 192.168.0.151 00:0F:AF:85:6C:F6 192.168.0.152 00:0F:AF:83:1F:65 192.168.0.153 00:0F:AF:85:70:03 192.168.0.153 00:0F:AF:85:70:03 192.168.1.1 00:0F:AF:81:19:1F 192.168.1.10 00:30:15:A2:3B:B6 192.168.1.11 00:30:15:A3:23:B7 192.168.1.11 00:30:15:A3:23:B7 192.168.1.12 00:30:15:A2:3A:A1 192.168.1.21 00:0F:AF:85:6C:09 192.168.1.152 00:0F:AF:83:1F:65 192.168.2.2 00:0F:AF:85:6C:25 192.168.2.20 00:0F:AF:85:55:DE 192.168.2.20 00:0F:AF:85:55:DE 192.168.2.21 00:0F:AF:85:6C:09 192.168.2.22 00:0F:AF:85:5C:41 192.168.2.22 00:0F:AF:85:5C:41 192.168.3.1 00:0F:AF:81:19:1F 192.168.3.2 00:0F:AF:85:6C:25 192.168.3.3 00:0F:AF:85:70:42 192.168.3.3 00:0F:AF:85:70:42 192.168.3.10 00:30:15:A2:3B:B6 192.168.3.12 00:30:15:A2:3A:A1(2)unip去重
如果文件中有多行完全相同的內(nèi)容,當前是希望能刪除重復的行,同時還可以統(tǒng)計出完全相同的行出現(xiàn)的總次數(shù), 那么就可以使用uniq命令解決這個問題(但是必須配合sort使用)。
uniq [OPTION]... [INPUT [OUTPUT]] #選項: # -c 計算重復的行 ? #1.創(chuàng)建一個file.txt文件: [root@yfy ~]# cat file.txt abc 123 abc 123 #2.uniq需要和sort一起使用, 先使用sort排序, 讓重復內(nèi)容連續(xù)在一起 [root@yfy ~]# cat file.txt |sort 123 123 abc abc #3.使用uniq去除相鄰重復的行 [root@yfy ~]# cat file.txt |sort|uniq 123 abc #4.-c參數(shù)能統(tǒng)計出文件中每行內(nèi)容重復的次數(shù) [root@yfy ~]# cat file.txt |sort|uniq -c2 1232 abc上面的案例中,有重復的ip,我們希望能夠去重
[root@yfy ~]$ sort -t. -k3.1,3.1n -k4.1,4.3n test.txt |uniq 192.168.0.151 00:0F:AF:85:6C:F6 192.168.0.152 00:0F:AF:83:1F:65 192.168.0.153 00:0F:AF:85:70:03 192.168.1.1 00:0F:AF:81:19:1F 192.168.1.10 00:30:15:A2:3B:B6 192.168.1.11 00:30:15:A3:23:B7 192.168.1.12 00:30:15:A2:3A:A1 192.168.1.21 00:0F:AF:85:6C:09 192.168.1.152 00:0F:AF:83:1F:65 192.168.2.2 00:0F:AF:85:6C:25 192.168.2.20 00:0F:AF:85:55:DE 192.168.2.21 00:0F:AF:85:6C:09 192.168.2.22 00:0F:AF:85:5C:41 192.168.3.1 00:0F:AF:81:19:1F 192.168.3.2 00:0F:AF:85:6C:25 192.168.3.3 00:0F:AF:85:70:42 192.168.3.10 00:30:15:A2:3B:B6 192.168.3.12 00:30:15:A2:3A:A1(3)cut截取字段
cut OPTION... [FILE]... #選項 # -d 指定分隔符 # -f 數(shù)字,取第幾列 –f3,6 三列和六列 # -c 按字符取(空格也算) ? #echo "Im yfy, from China" >cut_01.txt 過濾出文件中的yfy China ? [root@yfy ~]$ cut -d " " -f2,4 cut_01.txt yfy, China [root@yfy ~]$ cut -d " " -f2,4 cut_01.txt |sed 's#,##g' yfy China ? #不加sed過濾會有, 所以用sed把,替換掉(4)wc統(tǒng)計行號
wc [OPTION]... [FILE]... #選項:-l顯示文件行數(shù) -c顯示文件字節(jié) -w顯示文件單詞 ? # wc -l /etc/fstab ? ? #統(tǒng)計/etc/fstab文件有多少行 # wc -l /etc/services ? #統(tǒng)計/etc/services 文件行號總結(jié)
以上是生活随笔為你收集整理的Linux之系统文件管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux之bash shell基本命令
- 下一篇: Linux之vim的使用