. find 用於查找目錄下的文件,也可以調用其他命令使用 find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] find 【選項】 【路徑】【操作語句】 options: -depth # 在指定目錄下最深層的子目錄 ...
. find
用於查找目錄下的文件,也可以調用其他命令使用
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
find 【選項】 【路徑】【操作語句】
options:
-depth # 在指定目錄下最深層的子目錄開始查找
-maxdept levels # 查找最大目錄級數,levels為自然數
-regextype type # 正則表達式類型,預設是emacs,
tests:
-mtime [-n|n|+n] # 按文件的修改時間查找文件 ,單位是“天”
-atime [-n|n|+n] # 按文件的訪問時間查找文件
-ctime [-n|n|+n] # 按文件的狀態改變時間查找文件
-mmin # 按文件的修改時間查找文件,單位是“分鐘”
-amin # 按文件的訪問時間查找文件
-cmin # 按文件的狀態改變時間查找文件
-group # 按文件所屬的組來查找文件
-name # 按文件名查找文件,支持通配符號
-newer # 查找更改時間比指定文件新的文件
-nogroup # 查找的文件所屬的組在/etc/groups中不存在
-nouser # 查找文件的數組在/etc/passwd中不存在
-path pattern # 指定路徑樣式,配合-prune排除指定目錄
-perm # 按文件許可權來查找文件
-size n[cwbkMG] # 按照文件大小為n來查找,後面接計量單位
-user # 按文件屬主來查找文件
-type # 按文件類型查找文件 b,c,d,p,l,f,s,D
actions:
-delete # 將找出的文件刪除
-exec # 將查找出的文件交給改參數後面的shell命令運行
-ok # 與-exec用法相同,但是會進行提示
-prune # 不在當前指定的目錄進行查找
-print # 預設功能可以省略,將匹配文件輸出到標準輸出
! # 取反
-a # 取交集,and
-o # 取並集,or
find . -atime -2 find /data/ -mtime -5 find /var/log/ -mtime +5 -name '*.log' find . ! -type d find /data/ -perm 755 find . -size +1000c find /data -path "/data/dir3" -prune -o -print # -a和-o類似“&&”和“||”,為真時,執行-prune;為假時,執行-print find /data \(-path /data/dir2 -o -path /data/dir3\) -prune -o -print find . -nouser find . -group nobody find . -newer file1.txt # 查找比file1更新的文件 find . -maxdepth 1 -type d find . -maxdepth 1 -type d ! -name "." find . -maxdepth 1 -type d ! -name "." -o -name "xiaolizi" find . -maxdepth 1 -type d ! -name "." -a -name "xiaolizi" find . -type f -exec ls -l {} \; find . -type f -mtime +14 -exec rm {} \; find . -type f -mtime +14 -ok rm {} \; find . -type f -mtime +14 |xargs ls -l find . -name "*.txt" |xargs -i mv {} dir2/ find . -name "*.txt" |xargs -i mv -t dir2/ find . -type -f -name "test.txt"|xargs tar zcf xiaolizi.tar.gz # 不能使用-exec
. rename
通過字元串替換的方式批量修改文件名
rename from to file...
from: 需要替換或者需要處理的字元(文件名或者擴展名)
to: 把from代表的內容替換為to代表的內容
file: 待處理的文件,可以用“*”通配所有文件
rename "_finished" "" * # 將所有文件的_finished替換為空 rename .jpg .xiaolizi *.jpg # 將所有文件的.jpg替換為.xiaolizi
. basename
只顯示去除絕對路徑後的文件名
. dirname
只顯示文件的目錄名
. chattr
改變文件擴展屬性
a # 只能向文件中添加數據,而不能刪除,多用於伺服器日誌安全
i # 設定文件不能被刪除,改名,寫入或者新增內容, 給文件加鎖+i 解鎖-i
. lsattr
查看文件擴展屬性
. file
顯示文件類型
file + filename
. md5sum
用於計算和校驗文件的MD5值,是一種不可逆的加密演算法
-b # 二進位模式讀取文件
-c # 從指定文件中讀取md5校驗值,併進行校驗
-t # 文本模式讀取文件,預設模式
--quiet # 校驗文件使用的參數,驗證通過不輸出OK
--status # 校驗文件使用參數,不輸出任何信息,可以通過命令的返回值來判斷
md5sum xiaolizi.txt # 加密文件 md5sum xiaolizi.txt>md5.log # 生成校驗文件 md5sum -c md5.log # 檢查文件完整性 md5sum --status -c md5.log # 使用"echo $?",來判斷是否執行成功
# 伺服器備份腳本,使用md5校驗數據完整性
#!/bin/bash
# Source function library
./etc/init.d/functions
# Defined variables
IP=$(ifconfig eth1|awk -F '[ :]+' 'NR==2{print $4}')
Path="/data/backup/$IP"
TIME=`/bin/date +%F`
BackupFile=/server/scripts/backuplist
# Judged the exostence of variables
[ ! -d $Path ] && mkdir -p $Path
[ ! -f $BackupFile ] && {
echo "Please give me $BackupFile"
exit 1
}
# Defined result function
function Msg(){
if [ $? -eq 0 ];then
action "$*" /bin/true
else
action "$*" /bin/false
fi
}
# Backuo config files
tar zcfh $Path/conf_${TIME}.tar.gz `cat $BackupFile` &>/dev/null
Msg 'Backup config files'
# Make a flag for backup
find $Path -type f -name "*${TIME}.tar.gz"|xargs md5sum >$Path/flag_${TIME} 2>/dev/null
# 備份成功建立md5sum文件指紋庫
Msg 'Make a flag for backup'
# Send backup to backupsever
rsync -az $Path rsync_backup@rsync::backup --password-file=/etc/rsync.password &>/dev/null
Msg 'Send backup to backup server'
# 檢查伺服器備份情況,郵件通知管理員
#!/bin/bash
DIR=/data/backup
TIME=`/bin/date + %F`
log=/tmp/$TIME-check.log
[ -d $DIR ] && {
find $DIR -type f -name "flag_$TIME"|xargs md5sum -c >$log 2>/dev/null
mail -s "$(date +%F_%T)backup check result" [email protected] <$log
}
# Delete backup a week ago
find $Path -type f -name "*.tar.gz" -mtime +7|xargs rm -f &>/dev/null
Msg 'Delete backup a week ago'
. chown
改變文件或目錄的用戶和用戶組
chown [OPTION]... [OWNER][:[GROUP]] FILE...
被授權的用戶,在操作系統中需要先存在
chown oldboy file.txt # 屬主會變化 chown .odboy file.txt # 屬組會變化 chown root:root file.txt # 同時更改文件所屬用戶和組屬性 或者 chown root.root file.txt chown -R xiaolizi.xiaolizi file.txt # 遞歸授權
. chmod
改變文件或者目錄許可權,但是一般只有root用戶或者文件的屬組才可以使用
chmod [OPTION]... MODE[,MODE]... FILE...
許可權位:
r:讀4 w:寫2 x:執行1 -:無許可權
特殊許可權位:
t,T,s,S,X,x
用戶類型:
所屬用戶:u 所屬組用戶:g 其他用戶:o
操作字元:
+加入 -減去 =設置
chmod a= file.txt # 所有許可權為空 chmod u+x file.txt chmod g+w file.txt chmod o+r file.txt chmod uf+r,o-r file.txt chmod u=rwx,g=rx,o=x file.txt chmod -R 644 /dir/ 遞歸設置文件許可權
. umask
用來定義用戶創建文件或目錄的預設許可權
1.創建文件最大許可權為666,但是設置的umask碼為022,所以文件許可權變為644
但是當文件許可權值,減去,umask值,若是期中有數字是奇數,那這個奇數需要+1變成偶數
2.創建目錄預設最大許可權是777,777-022=755,所以預設創建目錄許可權是755
3.umask值是由/etc/profile文件中決定的61,69行,具體可以查看代碼