1、文件管理類命令總結
(1)cp命令:copy
源文件 :目標文件 :
單源復制 :cp [OPTION]… [-T] SOURCE DEST (源文件只有一個,可以是文件也可以目錄)
多源復制 :cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…(是上一種方式的另一種形式,把目標目錄放到 前邊)
單源復制 :cp [OPTION]… [-T] SOURCE DEST
如果DEST不存在,則事先創建此文件 ,并復制源文件 的數據流至DEST中。
如果DEST是非目錄文件 :則覆蓋目標文件 。
如果DEST是目錄文件 :則先在DEST目錄下創建一個與源文件同名的文件 ,并復制其數據流至目標文件 。
~]# cp test1 test
多源復制 :cp [OPTION]… SOURCE… DIRECTORY
如果DEST不存在:錯誤
如果DEST是目錄文件 :分別復制每個文件至目錄中。
-i: 交互式復制:即覆蓋之前提醒用戶確認。
-f:強制覆蓋目標文件:
-r:遞歸復制目錄;
-d:復制符號鏈接文件本身,而非其指向的源文件
-a:-dR –preserve=all ,archive,用于實現歸檔 ,可以理解為備份。
–preserve:
mode:權限
ownership:屬主和屬組
timestamps:時間戳
context:安全標簽
xattr:擴展屬性
links:符號鏈接
all:上述所有屬性
~]# cp -r myfile test(復制目錄)
~]# cp test1 test2 test (復制文件)
~]# cp -a test2 myfile (復制時保留元數據,用于歸檔)
(2)mv命令:move
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
-i: 交互式:即覆蓋之前提醒用戶確認。
-f:強制覆蓋目標文件:
與cp唯一的區別是多了一個刪除的操作。
在同一個目錄下mv的結果是重命名。
(3)rm [OPTION]… FILE…
常用選項:
-i:interactive
-f:force
-r:recursive
刪除目錄:rm -rf /home/ls/lssdf
危險操作:rm -rf /*
注意:所有不用的文件建議不要直接刪除,而是移動至某個專用目錄:(模擬回收站)。
(4)install命令:
install – copy files and set attributes
單源復制:
install [OPTION]… [-T] SOURCE DEST
多源復制:
install [OPTION]… SOURCE… DIRECTORY
install [OPTION]… -t DIRECTORY SOURCE…
創建目錄:
install [OPTION]… -d DIRECTORY…
常用選項:
-o, –owner=OWNER:設定目標文件屬主;
-g, –group=GROUP:設定目標文件屬組;
例: ~]# install -o liuwei -d t4 t5
~]# ll -d t4
drwxr-xr-x. 2 liuwei root 6 10月 9 21:24 t4
(5)mktemp命令:
mktemp – create a temporary file or directory
mktemp [OPTION]… [TEMPLATE]
常用選項:
-d:創建臨時目錄
例:~]# mktemp -d /tmp/wei.XXXX
/tmp/wei.da0t
注意:mktemp會將創建的臨時文件名直接返回,因此,可直接通過命令引用保存起來;
例:~]# mktemp -d /tmp/wei.XXXX > test1
(6)目錄管理類的命令:
mkdir :創建目錄
-p :自動按需創建父目錄
-v:verbose,顯示創建過程
-m:mode :直接給定權限
注意:路徑基名方為命令的作用對象:基名之前的路徑名必須得存在。
例: mkdir -pv /tmp/x/{y1/{a,b},y2}
rmdir 刪除空目錄
-p:刪除某目錄后,如果其父目錄為空,則一并刪除之;
-v:顯示過程;
2、Bash特性總結:
-
命令補全
shell 程序在接收到用戶執行命令的請求,分析完成之后,最左側的字符串會被 當作命令:
命令查找機制:
-
查找內部命令
-
根據PATH環境變量中設定的目錄, 自左而右逐個搜索目錄下文件名:
-
給定的打頭字符串如果能惟一標識某命令程序文件,則直接補全;
-
不能唯一標識某命令程序文件 ,再擊tab鍵一次,會給出列表。
-
路徑補全:
在給定的起始路徑下,以對應路徑下打頭字串來逐一匹配起始路徑下的每個文件 :
tab:
如果能惟一標識:則直接補全:
否則 :再一次tab,給出列表
-
命令行展開
~:自動展開為用戶的家目錄,或指定的用戶的家目錄:~]# cd ~liuwei
{}:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;
例:/tmp/{a,b} 相當于 tmp/a /tmp/b
例:mkdir -pv /tmp/x/{y1/{a,b},y2}相當于創建
[root@ACA802E7 x]# tree
.
├── y1
│ ├── a
│ └── b
└── y2
例:創建/tmp下的a_c,a_d,b_c,b_d
~]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: 已創建目錄 "/tmp/a_c"
mkdir: 已創建目錄 "/tmp/a_d"
mkdir: 已創建目錄 "/tmp/b_c"
mkdir: 已創建目錄 "/tmp/b_d"
例:創建/tmp目錄下的mylinux/
mylinux]# tree
.
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── rum
tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,rum}}
mkdir: 已創建目錄 "/tmp/mylinux"
mkdir: 已創建目錄 "/tmp/mylinux/bin"
mkdir: 已創建目錄 "/tmp/mylinux/boot"
mkdir: 已創建目錄 "/tmp/mylinux/boot/grub"
mkdir: 已創建目錄 "/tmp/mylinux/dev"
mkdir: 已創建目錄 "/tmp/mylinux/etc"
mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d"
mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig"
mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig/network-scripts"
mkdir: 已創建目錄 "/tmp/mylinux/lib"
mkdir: 已創建目錄 "/tmp/mylinux/lib/modules"
mkdir: 已創建目錄 "/tmp/mylinux/lib64"
mkdir: 已創建目錄 "/tmp/mylinux/proc"
mkdir: 已創建目錄 "/tmp/mylinux/sbin"
mkdir: 已創建目錄 "/tmp/mylinux/sys"
mkdir: 已創建目錄 "/tmp/mylinux/tmp"
mkdir: 已創建目錄 "/tmp/mylinux/usr"
mkdir: 已創建目錄 "/tmp/mylinux/usr/local"
mkdir: 已創建目錄 "/tmp/mylinux/usr/local/bin"
mkdir: 已創建目錄 "/tmp/mylinux/usr/local/sbin"
mkdir: 已創建目錄 "/tmp/mylinux/var"
mkdir: 已創建目錄 "/tmp/mylinux/var/lock"
mkdir: 已創建目錄 "/tmp/mylinux/var/log"
mkdir: 已創建目錄 "/tmp/mylinux/var/rum"
注:tree命令需要安裝:用來展示目錄樹
tree [options] [directory]
-L level: 指定要顯示的層級
-
命令的執行狀態結果
-
bash通過狀態返回值來輸出此結果 。
成功:0
失?。?/span>1-255
命令執行完成之后 ,其狀態返回值保存于bash的特殊變量$?中。
~]# lss
~]# echo $?
127
~]# ls
~]# echo $?
0
-
命令正常執行時,有的還會有命令返回值 。
根據命令及其功能不同,結果各不相同:
引用命令的執行結果:
$(COMMAND)
或'COMMAND' 反引號(在~那個按鍵上面)
~]# echo `ls` 或 echo $(ls)
-
引用
強引用 :‘’直接引用
~]# echo '$SHELL'
$SHELL
弱引用 :“” 將變量替換成變量所存儲的值
~]# echo "$SHELL"
/bin/bash
命令引用 :` ` 反引號
~]# echo `ls`
fstab liuwe.vVvb myfile t1 t2 t3 t4 t5 test test1 test2 wei.da0t
-
快捷鍵
ctrl+a: 跳轉至命令行行首
ctrl+e :跳轉至命令行行尾。
ctrl+u:刪除行首至光標所在處之間的所有字符 。
ctrl+k:刪除光標所在處至行尾的所有字符。
ctrl+l:清屏 ,相當于clear命令
-
命令歷史 :shell進程會在在其會話中保存此前用戶提交執行過的命令。
#history
定制hisotry的功能,可通過環境變量實現:
HISTSIZE: shell進程可保留的命令歷史的條數:
HISTFILE:持久保存命令歷史的文件 :
.bash_history
HISTFILESIZE:命令歷史文件的大小
命令用法 :
history [-c] [-d 偏移量][n]
或 history -anrw [文件名]
或 history -ps 參數 [參數…]
-c :清空命令歷史
-d offset:刪除指定命令歷史
-r : 從文件讀取命令歷史至歷史列表中, ~]# history -r .bash_history
-w:把歷史列表中的命令追加至歷史文件中
history #:顯示最近的#條命令
~]# history 3
2187 locate -r ".*liuwei"
2188 locate -r ".*liuwei$"
2189 history 3
調用命令歷史列表中的命令:
!#:再一次執行
??!:再一次執行上一條命令
!STRING:再一次執行命令歷史列表中最近一個以STRING開關的命令
注意:命令的重復執行有時候需要依賴于冪等性。
調用上一條命令的最后一個參數:
快捷鍵: ESC +(松開) .
字符串:!$
/]# cd ..
[root@ACA802E7 /]# !$
..
控制命令歷史記錄的方式:
環境變量:HISTCONTROL
值:ignoredups:忽略重復的命令
ignorespace:忽略以空白字符開頭的
ignoreboth:以上兩者同時生效
修改變量的值 :
NAME='VALUE'
(8) 多命令執行:
~]# COMMAND1; COMMAND2; COMMAND3; …
邏輯運算:
運算數:真(true, yes, on, 1)
假(false, no, off, 0)
與:
1 && 1 = 1
1 && 0 = 0
0 && 1 = 0
0 && 0 = 0
或:
1 || 1 = 1
1 || 0 = 1
0 || 1 = 1
0 || 0 = 0
非:
! 1 = 0
! 0 = 1
短路法則:
~]# COMMAND1 && COMMAND2
COMMAND1為“假”,則COMMAND2不會再執行;
否則,COMMAND1為“真”,則COMMAND2必須執行;
~]# COMMAND1 || COMMAND2
COMMAND1為“真”,則COMMAND2不會再執行;
否則,COMMAND1為“假”,則COMMAND2必須執行;
示例:~]# id $username || useradd $username
(9) 命令hash
緩存此前命令的查找結果:key-value
key:搜索鍵
value:值
hash命令:
hash:列出
hash -d COMMAND:刪除
hash -r:清空
(10) 變量
程序:指令+數據
指令:由程序文件提供;
數據:IO設備、文件、管道、變量
程序:算法+數據結構
變量名=指向的內存空間
變量賦值:name=value
變量類型:存儲格式、表示數據范圍、參與的運算
編程語言:
強類型變量
弱類型變量:
bash把所有變量統統視作字符型;(不支持符點 類型,除非借助外界工具)
bash中的變量無需事先聲明;相當于,把聲明和賦值過程同時實現;
聲明:類型,變量名
變量替換:把變量名出現的位置替換為其所指向的內存空間中數據;
變量引用:${var_name}, $var_name
變量名:變量名只能包含數字、字母和下劃線,而且不能以數字開頭;
變量名:見名知義,命名機制遵循某種法則;不能夠使用程序的保留字,例如if, else, then, while等等;
bash變量類型:
普通:zsh,2b:bash,文藝青年:fi sh
本地變量:作用域僅為當前shell進程;
環境變量:作用域為當前shell進程及其子進程;
局部變量:作用域僅為某代碼片斷(函數上下文);
位置參數變量:當執行腳本的shell進程傳遞的參數;
特殊變量:shell內置的有特殊功用的變量;
$?:
0:成功
1-255:失敗
本地變量:
變量賦值:name=value
變量引用:${name}, $name
"":變量名會替換為其值;
'':變量名不會替換為其值;
查看變量:set
撤銷變量:unset name
注意:此處非變量引用;
環境變量:
變量賦值:
(1) export name=value
(2) name=value
export name
(3) declare -x name=value
(4) name=value
declare -x name
變量引用:${name}, $name
注意:bash內嵌了許多環境變量(通常為全大寫字符),用于定義bash的工作環境
PATH, HISTFILE, HISTSIZE, HISTFILESIZE, HISTCONTROL, SHELL, HOME, UID, PWD, OLDPWD
查看環境變量:export, declare -x, printenv, env
撤銷環境變量:unset name
只讀變量:
(1) declare -r name
(2) readonly name
只讀變量無法重新賦值,并且不支持撤銷;存活時間為當前shell進程的生命周期,隨shell進程終止而終止;
(11) 命令別名:alias
查看別名:~]#alias
定義別名:
~]#alias NAME="COMMAND"
注意:僅對當前shell進程有效
撤銷別名: unalias
~]#unalias NAME
(12) globbing: 文件名通配(整體文件匹配,而非部分)
匹配模式:元字符
*:匹配任意長度的任意字符
pa* ,*pa*,*pa,*p*a*
pa,paa,passwd
?:匹配任意單個字符
pa? ,??aa,p?a,p?a?
paa
[]:匹配指定范圍內的任意單個字符
有幾種特殊格式:
[a-z],[a-z],[0-9] ,[a-z0-9]
[[:upper:]]:所有 大寫字母
[[:lower:]]:所有小寫字母
[[:alpha:]]:所有字母 .
[[:digit:]]:所有數字
[[:alnum:]]:所有的字母和數字
[[:space:]]:所有空白字符
[[:punct:]]:所有標點符號
[ ^]:匹配指定范圍外的任意單個字符
[^[:upper:]]
[^0-9]
[^[:alnum:]]
例:顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件目錄。
var]# ls -d l*[[:digit:]]*[[:lower:]]
例:顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
~]# ls -d /etc/[[:digit:]]*[^[:digit:]]
例:顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
~]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
例:在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22
tmp]# touch tfile-`date +%Y`-`date +%m`-`date +%d`-`date +%H`-`date +%M`-`date +%S`
例:復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
tmp]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
例:復制/etc/目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
~]# cp -r /etc/*.d /tmp/mytest2
例:復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
~]# cp /etc/[lmn]*.conf /tmp/mytest3
(13)IO重定向及管道
程序:指令+數據
程序:IO,在不指定輸入輸出時,有默認的輸入輸出,如后臺服務。
可用于輸入的設備:文件
鍵盤設備、文件系統上的常規文件、網卡等;
可用于輸出的設備:文件
顯示器、文件系統上的常規文件、網卡等;
程序的數據流有三種:
輸入的數據流;<– 標準輸入(stdin),鍵盤;
輸出的數據流:–> 標準輸出(stdout),顯示器;
錯誤輸出流: –> 錯誤輸出(stderr),顯示器;
fd: file descriptor,文件描述符
標準輸入:0
標準輸出:1
錯誤輸出:2
1)IO重定向:
輸出重定向:>
特性:覆蓋輸出 (慎用)
輸出重定向:>>
特性:追加輸出
~]# set -C 僅對當前的shell進程有效。
禁止覆蓋輸出重定向至已存在的文件;
此時可使用強制覆蓋輸出:>|
~]# set +C
關閉上述特性
錯誤輸出流重定向:2>, 2>>
合并正常輸出流和錯誤輸出流:
(1) &>, &>>
(2) COMMAND > /path/to/somefile 2>&1
COMMAND >> /path/to/somefile 2>&1
特殊設備:/dev/null
輸入重定向:<
tr命令:
tr [OPTION]… SET1 [SET2]
把輸入的數據當中的字符,凡是在SET1定義范圍內出現的,通通對位轉換為SET2出現的字符
刪除鍵:按住ctrl鍵再按后退鍵。
用法1:
tr SET1 SET2 < /PATH/FROM/SOMEFILE
用法2:
tr -d SET1 < /PATH/FROM/SOMEFILE
注意:不修改原文件
Here Document:<<
cat << EOF
cat > /PATH/TO/SOMEFILE << EOF
2)管道:連接程序,實現將前一個命令的輸出直接定向后一個程序當作輸入數據流
COMMAND1 | COMMAND2 | COMMAND3 | …
tee命令:
COMMAND | tee /PATH/TO/SOMEFILE
練習1:把/etc/passwd文件的前6行的信息轉換為大寫字符后輸出;
head -n 6 /etc/passwd | tr 'a-z' 'A-Z'
3、文本文件查看及編輯類命令總結:
cat , tac , head , tail , more , less | wc, cut, sort, uniq, diff, patch
分屏查看命令:more less
more命令:more FILE:
特點: 翻屏至文件尾部后自動退出
less 命令:less FILE
head 命令:查看文件 前n 行:
head [options] file
-n #
-#
tail 命令:查看文件 后n行:
tail [options] FILE
-n #
-#
-f :查看文件尾部內容結束后不退出 ,跟隨顯示新增 的行。
stat 命令: 查看文件的元數據,即文件的屬性
stat FILE
文件:兩類數據
元數據 :metadata :相當于一本書的目錄頁,屬性內容
數據 :data :一本書的內容
時間戳:
access time :最近訪問:2016-09-07 19:46:04.027932162 +0800
modify time 最近更改:2016-09-07 19:46:04.026932162 +0800
change time :最近改動:2016-09-07 19:46:04.026932162 +0800
最近更改是指數據發生改變。
最近改動是指元數據改變 。
使用stat 看到的文件數據為元數據 ,使用cat等看到的文件內容為數據
~]# stat test1
文件:"test1"
大小:65 塊:8 IO 塊:4096 普通文件
設備:fd00h/64768d Inode:206368246 硬鏈接:1
權限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)
環境:unconfined_u:object_r:admin_home_t:s0
最近訪問:2016-10-09 22:20:51.919309719 +0800
最近更改:2016-10-09 22:20:47.805240953 +0800
最近改動:2016-10-09 22:20:47.805240953 +0800
創建時間:-
touch命令:用于更改 atime ,mtime 時間戳信息
touch [OPTION]… FILE…
-c:指定的文件路徑不存在時不予創建
-a:僅修改access time
-m:僅修改modify time
-t:
use [[CC]YY]MMDDhhmm[.ss] instead of current time
cat命令:查看文件內容
cat [OPTION]… [FILE]…
-n :給顯示 的所有行統一編號
-E: 顯示行結束符$
tac命令:逆序顯示文件內容
tac [OPTION]… [FILE]…
-n :給顯示 的所有行統一編號
-E: 顯示行結束符$
file命令: 查看文件內容類型
file [FILE] ….
echo:回顯
echo [SHORT-OPTION]… [STRING]…
-n :不進行換行
-e:讓轉義符生效
\t 制表符
\b 退格鍵
\n 回車
可以實現顏色控制
STRING:可以使用引號,單引號和雙引號均可用:
單引號:強引用,變量引用不執行替換
~]#echo '$SHELL'
雙引號:弱 引用 ,變量引用會被替換
~]# echo "$SHELL"
文本查看及處理工具
wc, cut, sort, uniq, diff, patch
wc:word count字數統計
wc [OPTION]… [FILE]…
-l: lines
-w:words
-c: bytes
cut:剪切出需要的列
cut OPTION… [FILE]…
OPTION:
-d CHAR:以指定的字符為分隔符;
-f FIELDS:挑選出的字段;
#:指定的單個字段;
#-#:連續的多個字段;
#,#:離散的多個字段;
sort:對內容進行排序
sort [OPTION]… [FILE]…
-n:基于數值大小而非字符進行排序;
-t CHAR:指定分隔符;
-k #:用于排序比較的字段;
-r:逆序排序;
-f:忽略字符大小寫
-u:重復的行只保留一份;
重復行:連續且相同;
uniq:報告或移除重復的行
uniq [OPTION]… [INPUT [OUTPUT]]
-c:顯示每行的重復次數;
-u:僅顯示未曾重復過的行;
-d:僅顯示重復過的的行;
diff:compare files line by line :比較兩個文件的不同點
diff [OPTION]… FILES
diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE > /PATH/TO/PATCH_FILE
-u:使用unfied機制,即顯示要修改的行的上下文,默認為3行;
patch:向文件打補丁
patch [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE
patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE
4、文件查找命令
在文件系統上查找符合條件的文件;
實現工具:locate, find
locate:
依賴于事先構建好的索引庫;
系統自動實現(周期性任務);
手動更新數據庫(updatedb);
工作特性:
查找速度快;
模糊查找;
非實時查找;
locate [OPTION]… PATTERN…
-b:只匹配路徑中的基名;
-c:統計出共有多少個符合條件的文件;
-r:BRE
注意:索引構建過程需要遍歷整個根文件系統,極消耗資源;
find:
實時查找工具,通過遍歷指定起始路徑下文件系統層級結構完成文件查找;
工作特性:
查找速度略慢;
精確查找;
實時查找;
用法:
find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]
查找起始路徑:指定具體搜索目標起始路徑;默認為當前目錄;
查找條件:指定的查找標準,可以根據文件名、大小、類型、從屬關系、權限等等標準進行;默認為找出指定路徑下的所有文件;
處理動作:對符合查找條件的文件做出的操作,例如刪除等操作;默認為輸出至標準輸出;
查找條件:也即查找標準,或表達式
表達式:選項和測試
測試:結果通常為布爾型("true", "false")
根據文件名查找:
-name "pattern"
-iname "pattern"
支持glob風格的通配符;
*, ?, [], [^]
-regex pattern:基于正則表達式模式查找文件,匹配是整個路徑,而非其名;(不常用)
根據文件從屬關系查找:
-user USERNAME:查找屬主指定用戶的所有文件;
-group GRPNAME:查找屬組指定組的所有文件;
-uid UID:查找屬主指定的UID的所有文件;
-gid GID:查找屬組指定的GID的所有文件;
-nouser:查找沒有屬主的文件;
-nogroup:查找沒有屬組的文件;
根據文件的類型查找:
-type TYPE:
f: 普通文件
d: 目錄文件
l:符號鏈接文件
b:塊設備 文件
c:字符設備文件
p:管道文件
s:套接字文件
組合測試:
與:-a, 默認組合邏輯;
或:-o
非:-not, !
練習:
1、找出/tmp目錄下屬主為非root的所有文件;
2、找出/tmp目錄下文件名中不包含fstab字符串的文件;
3、找出/tmp目錄下屬主為非root,而且文件名不包含fstab字符串的文件;
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
根據文件的大小查找:
-size [+|-]#UNIT
常用單位:k, M, G
#UNIT:(#-1, #]
-#UNIT:[0,#-1]
+#UNIT:(#, oo)
根據時間戳查找:
以“天”為單位:
-atime [+|-]#
#:[#, #-1)
-#:(#, 0]
+#:(oo, #-1]
-mtime
-ctime
以“分鐘”為單位:
-amin
-mmin
-cmin
根據權限查找:
-perm [/|-]mode
mode:精確權限匹配;
/mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足;
9位權限之間存在“或”關系;
-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足;
9位權限之間存在“與”關系;
處理動作:
-print:輸出至標準輸出;默認的動作;
-ls:類似于對查找到的文件執行“ls -l”命令,輸出文件的詳細信息;
-delete:刪除查找到的文件;
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;
-ok COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;每次操作都由用戶進行確認;
-exec COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;
注意:find傳遞查找到的文件路徑至后面的命令時,是先查找出所有符合條件的文件路徑,并一次性傳遞給后面的命令;但是有些命令不能接受過長的參數,此時命令執行會失??;另一種方式可規避此問題:
find | xargs COMMAND
例:
1、查找/var目錄下屬主為root,且屬組為mail的所有文件或目錄;
~]# find /var -user root -a -group mail -ls
2、查找/usr目錄下不屬于root, bin或hadoop的所有文件或目錄;用兩種方法;
~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop
~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls
3、查找/etc目錄下最近一周內其內容修改過,且屬主不是root用戶也不是hadoop用戶的文件或目錄;
~]# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls
~]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop -ls
4、查找當前系統上沒有屬或屬組,且最近一周內曾被訪問過的文件或目錄;
~]# find / \( -nouser -o -nogroup \) -atime -7 -ls
5、查找/etc目錄下大于1M且類型為普通文件的所有文件;
~]# find /etc -size +1M -type f -exec ls -lh {} \;
6、查找/etc目錄下所有用戶都沒有寫權限的文件;
~]# find /etc -not -perm /222 -type f -ls
7、查找/etc目錄至少有一類用戶沒有執行權限的文件;
~]# find /etc -not -perm -111 -type f -ls
8、查找/etc/init.d/目錄下,所有用戶都有執行權限,且其它用戶有寫權限的所有文件;
~]# find /etc -perm -113 -type f -ls
原創文章,作者:北京凱振飛,如若轉載,請注明出處:http://www.www58058.com/50519