您好,登錄后才能下訂單哦!
這篇文章主要介紹了RHEL6中文件基本操作命令有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
文件(夾)查看類命令
ls--顯示指定目錄下內容
說明:ls 顯示結果以不同的顏色來區分文件類別。藍色代表目錄,灰色代表普通文件,綠色代表可執行文件,紅色代表壓縮文件,淺藍色代表鏈接文件。
-a---顯示所有內容,包括隱藏文件
說明:在Linux系統中,以“.”開頭的就是隱藏文件或隱藏目錄。
-l---以長格式(內容更詳細)顯示文件或目錄的詳細信息。
說明:ls -l命令可以簡寫成ll,
輸出的信息共分為7組:
文件類別和文件權限、鏈接數或子目錄個數、文件所有者、文件所屬組、文件大小(單位為字節B)、文件創建或修改時間、文件名。
文件類別:第一組前1位表示文件類別,“-”代表普通文件,“d”代表目錄,“l”代表符號鏈接,“c”代表字符設備,“b”代表塊設備
文件權限:第一組后9位表示文件權限,前3位為user、中間3位為group、后三位為other的權限
-d---顯示目錄本身的屬性而不是目錄中的內容。
[root@localhost ~]# ls -ld /home drwxr-xr-x. 4 root root 4096 9月 22 10:41 /home [root@localhost ~]# ls -d /home /home [root@localhost ~]#
-h---以K、M、G等單位顯示文件大小(默認為字節)
[root@localhost ~]# ls -h /home justin lost+found [root@localhost ~]# ls -lh /home 總用量 20K drwx------. 27 justin justin 4.0K 9月 22 13:19 justin drwx------. 2 root root 16K 9月 18 15:30 lost+found [root@localhost ~]#
-R---若目錄下有檔案,也將檔案依序列出
[root@localhost ~]# ls -lR /home /home: 總用量 20 drwx------. 27 justin justin 4096 9月 22 13:19 justin drwx------. 2 root root 16384 9月 18 15:30 lost+found /home/justin: 總用量 32 drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 公共的 drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 模板 drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 視頻 drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 圖片 drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 文檔 drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 下載 drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 音樂 drwxr-xr-x. 2 justin justin 4096 9月 22 10:49 桌面 /home/justin/公共的: 總用量 0 /home/justin/模板: 總用量 0 /home/justin/視頻: 總用量 0 /home/justin/圖片: 總用量 0 /home/justin/文檔: 總用量 0 /home/justin/下載: 總用量 0 /home/justin/音樂: 總用量 0 /home/justin/桌面: 總用量 0 /home/lost+found: 總用量 0 [root@localhost ~]#
-t---將檔案按照建立時間的先后次序列出
[root@localhost ~]# ls -l /home 總用量 20 drwx------. 27 justin justin 4096 9月 22 13:19 justin drwx------. 2 root root 16384 9月 18 15:30 lost+found -rw-r--r--. 1 root root 0 9月 22 15:21 t [root@localhost ~]# ls -lt /home 總用量 20 -rw-r--r--. 1 root root 0 9月 22 15:21 t drwx------. 27 justin justin 4096 9月 22 13:19 justin drwx------. 2 root root 16384 9月 18 15:30 lost+found [root@localhost ~]#
說明:ls命令還可以結合通配符“?”或“*”一起使用,問號“?”可以匹配文件名中的一個任意字符,而“*”可以匹配文件名中的任意多個字符。這兩個通配符同樣也適用于Shell環境中的其他大多數命令。
gssapi_mech.conf popt.d xml gtk-2.0 portreserve yp.conf hal postfix yum host.conf ppp yum.conf hosts prelink.cache yum.repos.d hosts.allow prelink.conf hosts.deny prelink.conf.d [root@localhost etc]# ll -d /etc/po*.d drwxr-xr-x. 2 root root 4096 1月 11 2010 /etc/popt.d [root@localhost etc]# ll -d /etc/po?.d ls: 無法訪問/etc/po?.d: 沒有那個文件或目錄 [root@localhost etc]#
du---顯示文件或目錄大小
-h或--human-readable---以K,M,G為單位,提高信息的可讀性
[root@localhost src]# du -h nagios-3.5.0.tar.gz 1.8M nagios-3.5.0.tar.gz [root@localhost src]# du nagios-3.5.0.tar.gz 1748 nagios-3.5.0.tar.gz [root@localhost src]#
-a---顯示全部目錄和其次目錄下的每個檔案所占的磁盤空間
-b或-bytes---顯示目錄或文件大小時,以byte為單位
[root@localhost local]# du -b src/nagios-3.5.0.tar.gz 1789376 src/nagios-3.5.0.tar.gz [root@localhost local]#
-c或--total---顯示每個目錄或文件的大小外,同時也顯示所有目錄或文件的總和
-m或--megabytes---以1MB為單位
-s---只顯示各檔案大小的總合
[root@localhost local]# du -sh src/ 41M src/ [root@localhost local]#
-x---只計算同屬同一個檔案系統的檔案
-L---計算所有的檔案大小
df---顯示檔案系統的狀況;主要用來了解系統中已經掛載的各個文件系統的磁盤使用情況
-h 顯示更易讀的容量單位
-T 顯示文件系統的類型
[root@localhost ~]# df -Th 文件系統 類型 容量 已用 可用 已用%% 掛載點 /dev/sda2ext4 9.9G 2.6G 6.9G 28% / tmpfs tmpfs 504M 112K 504M 1% /dev/shm /dev/sda1ext4 194M 27M 158M 15% /boot /dev/sda5ext4 7.7G 147M 7.2G 2% /home /dev/sr0iso9660 2.9G 2.9G 0 100% /media/RHEL_6.3 i386 Disc 1 [root@localhost ~]#
file---查看文件類型
[root@localhost home]# file justin/ justin/: directory [root@localhost home]# file justin1 justin1: empty [root@localhost ~]# file install.log install.log: UTF-8 Unicode text
說明:file命令用于查看文件的類型,可以根據文件的內部存儲結構來進行判別,而不根據文件的擴展名來進行判別。在Linux系統中,文件擴展名與文件類型沒有絕對的關系。
創建文件名中可以帶有空格,但需要用引號引起來,不建議使用空格
文件內容查看
cat---顯示文件內容
[root@localhost log]# cat /var/log/messages
說明:cat在顯示文本文件的內容時不進行停頓,對于內容較長的文件,在快速滾屏顯示之后,只有最后一頁的文件內容保留在屏幕中顯示,因此cat不適合查看長文件。
more---分頁顯示文件內容
-num--- 一次顯示的行數
-s ---當遇到有連續兩行以上的空白行,就代換為一行的空白行
+num ---從第 num 行開始顯示
[root@localhost log]# more -5s /var/log/messages Sep 22 10:36:06 localhost kernel: imklog 5.8.10, log source = /proc/kmsg started. Sep 22 10:36:06 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid ="1323" x-info="http://www.rsyslog.com"] start Sep 22 10:36:06 localhost kernel: Initializing cgroup subsys cpuset Sep 22 10:36:06 localhost kernel: Initializing cgroup subsys cpu --More--(0%)
說明:類似 cat ,不過會以一頁一頁的顯示方便使用者逐頁閱讀,空白鍵(space):顯示下一頁,b 鍵:顯示上一頁,q 鍵 :退出
less----分頁顯示文件內容
說明:less命令的用法與more命令類似,它們之間的區別是當文件內容顯示到文件尾時,more命令會自動退出閱讀環境,而less命令不自動退出,用戶仍然可以利用上下鍵來卷動文件,這樣更加有利于對文件內容的反復閱讀。當要結束瀏覽時,要在less命令的提示符“:”后按Q鍵退出
head---查看文件開頭部分的內容
-n 指定顯示的具體行數。
[root@localhost ~]# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@localhost ~]#
說明:默認情況下,head顯示前10行內容
tail---查看文件末尾部分的內容
[root@localhost ~]# tail -5 /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin justin:x:500:500:justin_peng:/home/justin:/bin/bash [root@localhost ~]#
說明:tail命令用法與head命令類似
paste---用于合并文件的列,將多行合并為一行
-d<間隔字符>或--delimiters=<間隔字符> 用指定的間隔字符取代跳格字符。
-s或--serial 將一個文件中的多行數據合并為一行進行顯示。只是將文件的內容調整顯示方式,并不會改變原文件的內容格式。
[root@localhost ~]# cat > 1.txt << EOF > 1 > 11 > 111 > EOF [root@localhost ~]# cat > 2.txt << eof > 2 > 22 > 222 > eof [root@localhost ~]# cat > 3.txt << eof > 3 > 33 > 333 > eof [root@localhost ~]# paste 1.txt 2.txt 3.txt 1 2 3 11 22 33 111 222 333 [root@localhost ~]#
[root@localhost ~]# cat > test.txt << EOF > 001 > 002 > 003 > 004 > 005 > 006 > 007 > EOF [root@localhost ~]# paste -d " " -s < test.txt 001 002 003 004 005 006 007 [root@localhost ~]# cat test.txt 001 002 003 004 005 006 007 [root@localhost ~]# cat test.txt | paste -d " " -s >> test1.txt [root@localhost ~]# cat test1.txt 001 002 003 004 005 006 007 [root@localhost ~]#
創建文件(夾)命令
touch---改變檔案的時間記錄,檔案不存在則創建一個空文件,通常用來創建一個文件
[root@localhost home]# touch file1 file2 [root@localhost home]# ls file1 file2 justin lost+found t [root@localhost home]#
[root@justin touch]# touch file{1..5} [root@justin touch]# ls file1 file2 file3 file4 file5 [root@justin touch]# touch file{6...9} [root@justin touch]# ls file1 file2 file3 file4 file5 file{6...9} [root@Zabbix zabbix]# mkdir dir{1..5} [root@Zabbix zabbix]# ls dir1 dir3 dir5 file10 file12 file14 file16 file18 file2 file3 file5 file7 file9 dir2 dir4 file1 file11 file13 file15 file17 file19 file20 file4 file6 file8 [root@Zabbix zabbix]# touch dir{1..5}/file{1..20} [root@Zabbix zabbix]# ls dir1 dir3 dir5 file10 file12 file14 file16 file18 file2 file3 file5 file7 file9 dir2 dir4 file1 file11 file13 file15 file17 file19 file20 file4 file6 file8 [root@Zabbix zabbix]#
說明:在實際使用中經常用于創建新的測試文件。使用文件名作為參數,可以同時創建多個文件,切中間只能是兩個點號。當目標文件已經存在時,將更新該文件的時間標記,否則將創建指定名稱的空文件。
-a 或--time=atime或--time=access或--time=use 只更改存取時間。
-m 或--time=mtime或--time=modify 只更改變動時間。
-c 或--no-create 假如目的檔案不存在,不會建立新的檔
-r 把指定文檔或目錄的日期時間,統統設成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非現在的時間。
[[CC]YY]MMDDhhmm[.SS]
這里,CC為年數中的前兩位,即”世紀數”;YY為年數的后兩位,即某世紀中的年數.如果不給出CC的值,則touch 將把年數CCYY限定在1969--2068之內.MM為月數,DD為天將把年數CCYY限定在1969--2068之內.MM為月數,DD為天數,hh 為小時數(幾點),mm為分鐘數,SS為秒數.此處秒的設定范圍是0--61,這樣可以處理閏秒.這些數字組成的時間是環境變量TZ指定的時區中的一個時 間.由于系統的限制,早于1970年1月1日的時間是錯誤的。
[root@localhost touch]# date Sat Jan 14 10:54:16 CST 2017 [root@localhost touch]# touch test1.txt [root@localhost touch]# touch -t 201610141053 test2.txt [root@localhost touch]# ll total 0 -rw-r--r-- 1 root root 0 Jan 14 10:54 test1.txt -rw-r--r-- 1 root root 0 Oct 14 10:53 test2.txt [root@localhost touch]# touch -r test1.txt test2.txt [root@localhost touch]# ll total 0 -rw-r--r-- 1 root root 0 Jan 14 10:54 test1.txt -rw-r--r-- 1 root root 0 Jan 14 10:54 test2.txt [root@localhost touch]#
mkdir---Make Directory---創建新的目錄
-p 確保目錄名稱存在,不存在的就建一個。
[root@localhost home]# ls justin lost+found t [root@localhost home]# mkdir dir1 [root@localhost home]# mkdir dir2/dir mkdir: 無法創建目錄"dir2/dir": 沒有那個文件或目錄 [root@localhost home]# mkdir -p dir2/dir [root@localhost home]#
同時創建多級目錄
[root@localhost home]# ls justin lost+found t [root@localhost home]# mkdir -p {dir1,dir2/{dir3,dir4}} [root@localhost home]# ls dir1 dir2 justin lost+found t [root@localhost home]# ls dir2 dir3 dir4 [root@localhost home]#
刪除文件(夾)命令
rmdir---刪除空目錄(若目錄非空刪除中會報錯)
-p 當子目錄被刪除后也成為空目錄的話,則順便一并刪除
[root@localhost home]# mkdir -p {dir1,dir2/dir3} [root@localhost home]# ls dir1 dir2 justin lost+found t [root@localhost home]# rmdir dir1 [root@localhost home]# rmdir dir2 rmdir: 刪除 "dir2" 失敗: 目錄非空 [root@localhost home]# rmdir -p dir2/dir3/ [root@localhost home]# ls justin lost+found t [root@localhost home]#
rm---刪除檔案或目錄
文件的刪除權限是由上級目錄決定的,即使一個用戶有該文件的刪除權限,沒有上次目錄的寫權限也是無法刪除該文件
-i 刪除前逐一詢問確認。
-v 顯示刪除過程
-f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下檔案也逐一刪除。
[root@localhost home]# mkdir -p dir1/dir2 [root@localhost home]# rm -r dir1/ rm:是否進入目錄"dir1"? y rm:是否刪除目錄 "dir1/dir2"?y rm:是否刪除目錄 "dir1"?y [root@localhost home]#
Linux 刪除除某個文件之外的所有文件
[root@APP rm]# ls sda SDa sdaa SDaa sdaaa sdaaaa SDaaaa sdaab sdaz [root@APP rm]# ls |grep -v SD|xargs rm -f [root@APP rm]# ls SDa SDaa SDaaaa [root@APP rm]#
還有一種更為方便的方法,需要開啟BashShell的extglob選項,
[root@APP rm]# touch sda SDa sdaa SDaa sdaaa sdaaaa SDaaaa sdaab sdaz [root@APP rm]# rm -f !(SD*) -bash: !: event not found [root@APP rm]# shopt -s extglob [root@APP rm]# rm -rf !(SD) [root@APP rm]# ls SDa SDaa SDaaaa [root@APP rm]# rm -f !(a|b) #保留a和b
如果出現-bash: !: event not found表示當前系統未開啟,
列出所有選項:shopt -p
列出所有打開的選項:shopt -s
開啟extglob命令:shopt -s extglob
列出所有關閉的選項:shopt -u
關閉extglob命令:shopt -u extglob
開啟之后,以下5個模式匹配操作符將被識別:
?(pattern-list) - 所給模式匹配0次或1次;
*(pattern-list) - 所給模式匹配0次以上包括0次;
+(pattern-list) - 所給模式匹配1次以上包括1次;
@(pattern-list) - 所給模式僅僅匹配1次;
!(pattern-list) - 不匹配括號內的所給模式。 !():與@()相反
-bash: /bin/rm: Argument list too long
[root@mail cur]# rm -rf * -bash: /bin/rm: Argument list too long [root@mail new]# ll |wc -l 221993 [root@mail cur]# ls | xargs -n 10 rm -fr ls [root@mail new]# ll |wc -l 1 [root@mail new]#
文件數達到21萬多,rm -f的參數過多,輸出所有的文件名(用空格分割) xargs就是將ls的輸出,每10個為一組(以空格為分隔符),作為rm -rf的參數也就是說將所有文件名10個為一組,由rm -rf刪除
linux中刪除文件名帶橫杠的文件的方法
rm -filename (其中“-filename”為文件名)這時系統會報錯,提示:無效的選項。這是因為shell把“-”后的文件名當做前面rm命令的參數選項了。
解決方法:
方法一:在文件名之前加上“--”,
如:rm -- -filename
這是因為shell把--之后的參數當做文件名來對待,禁止把-filename當做參數選項來解釋,所以能夠正確的執行shell命令。
注:可以在shell命令行中輸入man sh來參考shell對“--”的說明。
方法二:按照i節點號刪除
root@localhost node_api]# ls -i 403627443 config 16073267 -g [root@localhost node_api]# find ./ -inum 16073267 -exec rm {} \; [root@localhost node_api]# ls config [root@localhost node_api]#
刪除大量文件的方法
刪除數萬或者數十萬甚至數百萬的文件時使用rm -rf *要等待很長一段時間通過rsync的是替換原理,處理數十萬個文件也是秒刪。
rsync提供了一些跟刪除有關的參數:
rsync --help | grep delete
--del an alias for --delete-during
--delete delete extraneous files from destination dirs
--delete-before receiver deletes before transfer, not during 接收者在傳輸之前進行刪除操作
--delete-during receiver deletes during transfer (default)
--delete-delay find deletions during, delete after
--delete-after receiver deletes after transfer, not during
--delete-excluded also delete excluded files from destination dirs
--ignore-errors delete even if there are I/O errors
--max-delete=NUM don't delete more than NUM files
例如:/opt/data目錄下有好幾個目錄,目錄里總共有幾千萬個大小幾kb的小文件,需要刪除
1、創建一個空的目錄:mkdir /app/tmp
2、用rsync刪除目標目錄:rsync --delete-before -d -a -H -v --progress --stats /app/tmp/ /opt/data/
–delete-before 接收者在傳輸之前進行刪除操作
–progress 在傳輸時顯示傳輸過程
-a 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性
-H 保持硬連接的文件
-v 詳細輸出模式
–stats 給出某些文件的傳輸狀態
-d transfer directories without recursing
例如:日志文件/app/logs/log.txt有300多G,現在要刪除
1、創建一個空文件:touch /app/log
2、用rsync清空/root/data文件: rsync --delete-before -d --progess --stats /app/log /app/logs/log.txt
注意:
當SRC和DEST文件性質不一致時將會報錯
當SRC和DEST性質都為文件【f】時,意思是清空文件內容而不是刪除文件
當SRC和DEST性質都為目錄【d】時,意思是刪除該目錄下的所有文件,使其變為空目錄
修改文件(夾)名:
rename
格式:rename [options] expression replacement file...
rename [options] 被替換字符串 被替換字符串 被替換字符串
參數:
-v, --verbose 詳細模式:打印成功更改的文件名列表
-n, --no-act 測試模式:并不真正的執行命令,而只是顯示哪些文件名應該怎么進行更改,用于測試模式。
-f, --force 強制模式:在更改文件名,如果更改后的文件已經存在時覆蓋已經存在的文件
實例:
[root@localhost rename]# ls 111222 111.sh 111.txt 222.txt 333.txt [root@localhost rename]# rename 111 aaa * 將所有的文件(夾)中的111替換成aaa [root@localhost rename]# ls 222.txt 333.txt aaa222 aaa.sh aaa.txt [root@localhost rename]# rename '.txt' '.sh' * 將所有的以.txt的后綴替換成.sh [root@localhost rename]# ls 222.sh 333.sh aaa222 aaa.sh [root@localhost rename]# rename \.sh '' * 去掉所有的.sh后綴 [root@localhost rename]# ls 222 333 aaa aaa222 [root@localhost rename]#
清空或刪除大文件內容的方法
1、使用重定向的方法
[root@localhost ~]# dd if=/dev/zero of=test bs=1M count=1024 [root@localhost ~]# du -sh test 1.1G test [root@localhost ~]# > test [root@localhost ~]# du -sh test 0 test [root@localhost ~]#
2、使用true命令重定向清空文件
[root@localhost ~]# dd if=/dev/zero of=test bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 19.9467 s, 53.8 MB/s [root@localhost ~]# du -sh test 1.1G test [root@localhost ~]# true > test [root@localhost ~]# du -sh test 0 test [root@localhost ~]#
3、使用echo命令清空文件
[root@localhost ~]# dd if=/dev/zero of=test bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 22.563 s, 47.6 MB/s [root@localhost ~]# echo "" > test [root@localhost ~]# du -sh test 4.0K test [root@localhost ~]# echo -n "" > test #要加上"-n"參數,默認情況下會"\n",也就是回車符 [root@localhost ~]# du -sh test 0 test [root@localhost ~]#
4、使用truncate命令清空文件
[root@localhost ~]# dd if=/dev/zero of=test bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 22.0746 s, 48.6 MB/s [root@localhost ~]# du -sh test 1.1G test [root@localhost ~]# truncate -s 0 test #-s參數用來設定文件的大小,清空文件,就設定為0; [root@localhost ~]# du -sh test 0 test [root@localhost ~]#
感謝你能夠認真閱讀完這篇文章,希望小編分享的“RHEL6中文件基本操作命令有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。