locate
查找
-i 不區分大小寫
-n 只列舉前n個匹配項目
-r 使用基本正則表達式
根據數據庫實時更新查找,在文件/var/lib/mlocate/mlocatedb
如果說在終端新建立了一個文件夾如果要想生效,必須要運行updatedb,之後運行
locate file就可以生效了。速度快,模糊查找
建議在系統使用不高的時候使用,消耗系統性能大
各種選項用法 -r調用表達式常用 locate -r "\.\(jpp|npg\)$"
find
指搜索層級
-maxdepth level 最大搜索目錄深度,指定目錄下的文件爲第1級
-mindepth level 最小搜索目錄深度
find /etc -maxdepth 1 -mindepth 1 -name passwd
先處理目錄內的文件,再處理指定目錄 使用此參數,文件會排列在終端前面後是目錄
-depth
根據文件名和inode查找:
-name "文件名稱":支持使用glob
*, ?, [], [^]
-iname "文件名稱":不區分字母大小寫
-inum n 按inode號查找
-samefile name 相同inode號的文件
-links n 鏈接數爲n的文件
-regex “PATTERN”:以PATTERN匹配整個文件路徑,而非文件名稱
根據屬主、屬組查找:
-user USERNAME:查找屬主爲指定用戶(UID)的文件
-group GRPNAME: 查找屬組爲指定組(GID)的文件
-uid UserID:查找屬主爲指定的UID號的文件
-gid GroupID:查找屬組爲指定的GID號的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
根據文件類型查找
-type TYPE
f: 普通文件
d: 目錄文件
l: 符號鏈接文件
s:套接字文件
b: 塊設備文件
c: 字符設備文件
p: 管道文件
-empty 空文件或目錄
示例:find /app -type d -empty
-depth:在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找。
查找/etc/下,除/etc/sane.d目錄的其它所有.conf後綴的文件
find /etc -path ‘/etc/sane.d’ -a –prune -o -name “*.conf”
-path 指的是這個目錄,-prune指的是我取出的目錄剪切掉不參與查詢,或者我去搜索conf文件。
組合條件:
與:-a
或:-o
非:-not !
atime:Access time, 最後一次訪問文件(讀取或執行)的時間。
citme:Change time, 最後一次改變文件(屬性)或者目錄(屬性)的時間。
mtime:Modify time, 最後一次改變文件(內容)或目錄(內容)的時間。
根據文件大小來查找:
-size [+|-]#UNIT
常用單位:k, M, G,c(byte)
#UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k 表示[0,5k]
+#UNIT:(#,∞)
如:+6k 表示(6k,∞)
根據時間戳:
以“天”爲單位
訪問時間-atime [+|-]#,
#: [#,#+1)
+#: [#+1, ∞ ]
-#: [0,#)
修改時間-mtime
最近一次屬性改變時間-ctime
以“分鐘”爲單位
-amin
-mmin
-cmin
find perm 222 嚴格匹配
find perm +222 -ls (centos 6中這樣表示)
find perm /222 -ls 表示或者 3個權限 ,只要其中有一個符合條件的就會顯示出來
find perm -222 -ls 表示並且 ,必須滿足主組其他都有w權限
dd if=/dev/zero of=sun.txt bs=1M count=1
if 代表輸入文件。如果不指定if,默認就會從stdin中讀取輸入。
of 代表輸出文件。如果不指定of,默認就會將stdout作爲默認輸出。
bs 代表字節爲單位的塊大小。
count 代表被複制的塊數。
/dev/zero 是一個字符設備,會不斷返回0值字節(\0)。
-print:默認的處理動作,顯示至屏幕
-ls:類似於對查找到的文件執行“ls -l”命令 find -perm /044 -ls
-delete:刪除查找到的文件
-fls file:查找到的所有文件的長格式信息保存至指定文件中
-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令,對
於每個文件執行命令之前,都會交互式要求用戶確認
-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令
{}: 用於引用查找到的文件名稱自身
find傳遞查找到的文件至後面指定的命令時,查找到所有符合條件的文件一次性
傳遞給後面的命令
find 舉例
查找/var/log目錄中更改時間在7日以前的普通文件,並在刪除之前詢問它們:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找 aa.txt 並備份爲aa.txt.bak
$ find . -name 'aa.txt' -exec cp {} {}.bak \;
查詢當天修改過的文件
find ./ -mtime -1 -type f -exec ls -l {} \;
xargs
cat list |xargs rm -f b把前面的標準輸出給後面作爲參數
seq 10 |xargs -n 2
echo user{1..10}|xargs -n 1 useradd
壓縮
compress -c m.log > m.log.z
gzip/gunzip
gzip [OPTION]... FILE ...
-d 解壓縮,相當於gunzip
-c 結果輸出至標準輸出,保留原文件不改變
-# 指定壓縮比,#取值爲1-9,值越大壓縮比越大
gunzip file.gz 解壓縮
zcat file.gz 不顯式解壓縮的前提下查看文本文件內容
示例:
gzip -c messages >messages.gz
gzip -c -d messages.gz > messages
zcat messages.gz > messages
cat messages | gzip > m.gz
bzip2/bunzip2/bzcat
bzip2 [OPTION]... FILE ...
-k keep, 保留原文件
-d 解壓縮
-# 1-9,壓縮比,默認爲9
bunzip2 file.bz2 解壓縮
bzcat file.bz2 不顯式解壓縮的前提下查看文本文件內容
xz/unxz/xzcat
xz [OPTION]... FILE ...
-k keep, 保留原文件
-d 解壓縮
-# 壓縮比,取值1-9,默認爲6
unxz file.xz 解壓縮
xzcat file.xz 不顯式解壓縮的前提下查看文本文件內容
zip/unzip
打包壓縮
zip –r /backup/sysconfig /etc/sysconfig/
解包解壓縮
unzip sysconfig.zip
cat /var/log/messages | zip messages -
unzip -p message > message
tar工具
tar 選項 目標 源
tar(Tape ARchive,磁帶歸檔的縮寫)
tar [OPTION]...
選項
z 通過gzip 壓縮或者解壓
c 創建新的tar包
v 顯示詳細的tar包執行過程
f 指定壓縮文件的名字
t 不解壓查看tar包的內容
p 保持原文件原有屬性
j 通過bzip2命令壓縮或解壓
x 解開tar包
C 指定解壓的目錄路徑
--exclude=PATTERN 打包時排除不需要處理的文件或者是目錄
X+文件名 從指定文件讀取不需要處理的文件或者是目錄列表
N+日期 僅打包比指定日期新的文件,可用於增量打包備份。
(1) 創建歸檔,保留權限
tar -cpvf /PATH/FILE.tar FILE...
(2) 追加文件至歸檔: 注:不支持對壓縮文件追加
tar -r -f /PATH/FILE.tar FILE...
(3) 查看歸檔文件中的文件列表
tar -t -f /PATH/FILE.tar
(4) 展開歸檔
tar -x -f /PATH/FILE.tar
tar -x -f /PATH/FILE.tar -C /PATH/
(5) 結合壓縮工具實現:歸檔並壓縮
-j: bzip2, -z: gzip, -J: xz
tar工具
-exclude 排除文件
tar zcvf /root/a3.tgz --exclude=/app/host1 --exclude=/app/host2 /app
-T 選項指定輸入文件 -X 選項指定包含要排除的文件列表
tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist
split:分割一個文件爲多個文件
分割大的 tar 文件爲多份小文件
split -b Size –d tar-file-name prefix-name
split -b 1M –d mybackup.tgz mybackup-parts
split -b 1M mybackup.tgz mybackup-parts
合併:
cat mybackup-parts* > mybackup.tar.gz
cpio
功能:複製文件從或到歸檔
cpio命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,它可以解壓以
“.cpio”或者“.tar”結尾的文件
cpio [選項] > 文件名或者設備名
cpio [選項] < 文件名或者設備名
選項
-o 將文件拷貝打包成文件或者將文件輸出到設備上
-O filename 輸出到指定的歸檔文件名
-A 向已存在的歸檔文件中追加文件
-i 解包,將打包文件解壓或將設備上的備份還原到系統
-I filename 對指定的歸檔文件名解壓
-t 預覽,查看文件內容或者輸出到設備上的文件內容
-F filename 使用指定的文件名替代標準輸入或輸出
-d 解包生成目錄,在cpio還原時,自動的建立目錄
-v 顯示打包過程中的文件名稱
示例
將etc目錄備份:
find ./etc -print |cpio -ov >bak.cpio
將/data內容追加bak.cpio
find /data | cpio -oA -F bak.cpio
內容預覽
cpio –tv < etc.cpio
解包文件
cpio –idv < etc.cpio
compress 壓縮
uncpmpress 解壓縮
擴展名 *.z
gzip 壓縮
gunzip 解壓縮
擴展名 *.gz
bzip2 壓縮
bunzip2 解壓縮
bzcat 查看
擴展名 *.bz2
xz 壓縮
unxz 解壓縮
xzcat 查看
擴展名 *.xz
解壓tar.xz文件:先 xz -d xxx.tar.xz 將 xxx.tar.xz解壓成 xxx.tar 然後,再用 tar xvf xxx.tar來解包。
zip 打包壓縮
unzip 解包解壓縮
擴展名 *.z
tar 打包
擴展名 *.tar 沒有被壓縮過
*.tar.gz 打包後經過gzip 壓縮後的擴展名
*.tar.bz2 打包後及格過bzip2壓縮後的擴展名
cpio 複製文件從或歸檔
擴展名 *.z
對於tar指令,只需記住以下六個就夠用了:
bzip2支持的壓縮/解壓縮方式
壓縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或者文件夾 jcvf
查詢:tar -jtv -f filename.tar.bz2
解壓縮:tar -jxv -f filename.tar.bz2 -C 要將壓縮文件解壓縮到的目錄jxvf
gzip支持的壓縮/解壓縮方式
壓縮:tar -zcv -f filename.tar.gz 要被壓縮的文件或者文件夾 zcvf
查詢:tar -ztv -f filename.tar.gz
解壓縮:tar -zxv -f filename.tar.gz -C 要將壓縮文件解壓縮到的目錄zxvf
-zcf:歸檔並調用gzip壓縮
-zxf:調用gzip解壓縮並展開歸檔
-jcf:歸檔並調用bzip2壓縮
-jxf:調用bzip解壓縮並展開歸檔
-Jcf:歸檔並調用xz壓縮
-Jxf:調用xz解壓縮並展開歸檔
xzcat 查看
sed
參考網址https://blog.51cto.com/woyaoxuelinux/1868468
當用sed 時候先寫固定格式 以免出錯 sed -r 's###g' /etc/passwd
sed 常用選項:
有n 必有p
-n 不輸出模式空間內容到屏幕,即不自動打印
-e 多點編輯
-f /PATH/SCRIPT_FILE 從指定文件中讀取編輯腳本
-r 支持使用擴展正則表達式
-i.bak 備份文件並原處編輯
script:
'地址命令'
sed工具
地址定界:
(1) 不給地址:對全文進行處理
(2) 單地址:
#:指定的行,$:最後一行
/pattern/:被此處模式所能夠匹配到的每一行
(3) 地址範圍:
#,# 適用數字
#,+#
/pat1/,/pat2/ 適用字母 getent passwd| sed -rn '/^xiaoh/,/$ /p'
#,/pat1/
(4) ~:步進
1~2 奇數行
2~2 偶數行
把基數行後面加一個換行,奇數行和偶數行合併爲一行
seq 10 | sed "1~2N;s/\n/ /"
sed工具
編輯命令:
d 刪除模式空間匹配的行,並立即啓用下一輪循環
舉例:sed -i '2d' /passwd 刪除匹配到的第二行 i表示進行更改
p 打印當前模式空間內容,追加到默認輸出之後
a [\]text 在指定行後面追加文本,支持使用\n實現多行追加
舉例:sed '2a 666' 在第二行後頁面添加666
換行記得加\ sed '2a 666\n777‘
i [\]text 在行前面插入文本
c [\]text 替換行爲單行或多行文本
w /path/file 保存模式匹配的行至指定文件
舉例:nl passwd |head -10 |sed -n '/root/,/nologin/ w passwd.bak'
r /path/file 讀取指定文件的文本至模式空間中匹配到的行後
seq 1 5|sed '2r test.txt' 第二行後讀取這個文件
= 爲模式空間中的行打印行號
sed '=' /etc/passwd
sed '=' /etc/passwd| sed 'N;s/\n/ /g' 把空格去掉
! 模式空間中匹配行取反處理
sed -n ’2!p‘ 不顯示第二行
sed工具
s/// 查找替換,支持使用其它分隔符,s@@@,s###
替換標記:
g 行內全局替換
p 顯示替換成功的行
w /PATH/FILE 將替換成功的行保存至文件中
G 在每一行後面增加一行
分組替換[root@Centos7 ~]#echo i am oldboy teacher |sed 's#\(^.*am\) \([a-z].*\) \(tea\).*$#\1\3#g'
i amtea'
查找出單詞換行
sed -r "s/[^[:alpha:]]/\n/g" /etc/init.d/functions
每一行行首增加#號
sed -r 's/.*/#&/' fstab
sed -r 's/(.*)/#\1/g' fstab
無#的行添加#
sed -r -i '/^[^#]/s@(.*)@#\1@g' a.sh
取用戶
getent passwd|sed -n -e '/^xiaoh/,/^sh/p' |sed -rn 's/^([^:]+):.*/\1/p'
`sed -nr '/^alice/,$s/^([^:]+):.*/\1/p /etc/passwd`
更改文件後綴名
ls *.txt |sed -nr 's/(.*)\..*/\1.aaa/gp
取ip方法:
ifconfig ens33|sed -n '2p'|sed -e 's/^.*inet//g' -e 's/netmask.*$//g'
ifconfig ens33|sed -n '2p'|sed -n -e 's/^.*inet//g' -e 's/netmask.*$//gp'
ifconfig ens33|sed -n '2p'|sed 's/^.*inet//g;s/netmask.*$//g'
ifconfig ens33|sed -n '2p'|sed 's/^.*inet//g;s/netmask.*$//g'
ifconfig ens33| sed -nr '2s/(^[^0-9]+)([0-9.]+)+( .*$)/\2/gp'
ifconfig ens33|sed -n '/broadcast/p'|sed -r 's@inet (.*) netmask.*@\1@'
df 取佔用率
df | sed -rn '/^\/dev\/sd/s#(^[^[:space:]]+).*([[:digit:]]+)%.*#\1 \2#p'
df |sed -nr '/^\/dev\/sd/p'|sed -nr 's#([^[:space:]]+).*([0-9]+)%.*#\1 \2#p'
df |grep '/dev/sd' |sed -rn "s#([^[:space:]]+).* ([0-9]+)%.*#\1 \2#p"
調出misc 目錄
yum install autofs
systemctl start autofs
systemctl enable autofs
參考文檔https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html
替換一個文件/etc/passwd裏的這root:x:0:0:root:/root:/bin/bash一行第二個root爲test?
cat /etc/passwd| sed '/^root/!d'|sed 's/root/test/2'
sed -r 's/(.*)(:root:)(.*)/\1:test:\3/g'
第08天 [find,壓縮打包,sed]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.