Linux系統下想要查看當前的路徑,那我們該使用那個命令呢?下面由我為大家整理了linux查看路徑命令的相關知識,希望對大家有幫助。
目錄
linux查看路徑命令
linux查看路徑的其他命令
linux下查找某個文件位置的方法
查看當前路徑命令:pwd
pwd命令能夠顯示當前所處的路徑。
這個命令比較簡單,如果有時在操作過程中忘記了當前的路徑,則可以通過此命令來查看路徑,其執行方式為:
# pwd /home/samlee
第一行為運行的命令,第二行的內容為運行pwd命令後顯示的信息,即顯示用戶當前所在的工作目錄的路徑為/home/samlee。
提示:
應該經常使用pwd命令。Linux的目錄結構非常復雜,一個小小的分支就可能會有十幾層目錄,就好像是個森林,所以Linux不會像Windows那樣把全路徑寫在提示符里,那樣太長了。
<<<
whereis 用來查看一個命令或者文件所在的絕對路徑,而 which 用來查看當前要執行的命令所在的路徑。
下面舉個例子來說明。加入你的linux系統上裝了多個版本的java。如果你直接在命令行敲命令 "java -version" ,會得到一個結果。但是,你知道是哪一個路徑下的java在執行嗎?如果想知道,可以用 which 命令:
which java
得到的結果就是系統默認執行的java所在的路徑。
如果使用命令: whereis java
那麼你會得到很多條結果,因為這個命令把所有包含java(不管是文件還是文件夾)的路徑都列了出來。
<<<
一.通過文件名查找法:
舉例說明,假設你忘記了httpd.conf這個文件在系統的哪個目錄 下,甚至在系統的某個地方也不知道,則這是可以使用如下命令:
find / -name httpd.conf
這個命令語法看起來很容易就明白了,就是直接在find後面寫上 -name,表明要求系統按照文件名查找,最後寫上httpd.conf這個目標文件名即可。稍等一會系統會在計算機屏幕上顯示出查找結果列表:
etc/httpd/conf/httpd.conf
這就是httpd.conf這個文件在Linux系統中的完整路徑。查找成功。
如果輸入以上查找命令後系統並沒有顯示出結果,那麼不要以為系統沒有執行find / -name httpd.conf命令,而可能是你的系統中沒有安裝Apache伺服器,這時只要你安裝了ApacheWeb伺服器,然後再使用find / -name httpd.conf就能找到這個配置文件了。
二.無錯誤查找技巧:
在Linux系統中「find」命令是大多數系統用戶都可以使用的命令,並不是ROOT系統管理員的專利。但是普通用戶使用「find」命令時也有可 能遇到這樣的問題,那就是Linux系統中系統管理員ROOT可以把某些文件目錄設置成禁止訪問模式。這樣普通用戶就沒有許可權用「find」命令來查詢這 些目錄或者文件。當普通用戶使用「find」命令來查詢這些文件目錄是,往往會出現"Permissiondenied."(禁止訪問)字樣。系統將無法 查詢到你想要的文件。為了避免這樣的錯誤,我們可是使用轉移錯誤提示的方法嘗試著查找文件,例如輸入:
find / -name access_log 2>/dev/null
這個方法是把查找錯誤提示轉移到特定的目錄中去。系統執行這個命令後,遇到錯誤的信息就直接輸送到stderrstream2 中,access_log2就是表明系統將把錯誤信息輸送到stderrstream2中,/dev/null是一個特殊的文件,表明空的或者錯誤的信 息,這樣查詢到的錯誤信息將被轉移了,不會再顯示了。
在Linux系統查找文件也會遇到這樣一個實際問題。如果我們在整個硬碟,這個系統中查找某個文件就要花費相當長的一段時間,特別是大型Linux系 統和容量較大的硬碟,文件放在套嵌很深的目錄中的時候。如果我們知道了這個文件存放在某個大的目錄中,那麼只要在這個目錄中往下找就能節省很多時間了。使 用find /etc -name httpd.conf就可以解決這個問題。上面的命令就是表示在etc目錄中查詢httpd.conf這個文件。這里再說明一下「/」這個函數符號的含 義,如果輸入「find /」就是表示要求Linux系統在整個ROOT目錄下查找文件,也就是在整個硬碟上查找文件,而「find /etc」就是只在
etc目錄下查找文件。因為「find /etc」表示只在etc目錄下查找文件,所以查找的速度就相應要快很多了。
三.根據部分文件名查找方法:
例如我們知道某個文件包含有srm這3個字母,那麼要找到系統中所有包含有這3個字母的文件是可以實現 的,輸入:
find /etc -name '_srm_'
這個命令表明了Linux系統將在/etc整個目錄中查找所有的包含有srm這3個字母的文件,比如absrmyz,tibc.srm等等符合條件的文件都能顯示出來。如果你還知道這個文件是由srm 這3個字母打頭的,那麼我們還可以省略最前面的星號,命令如下:
find/etc -name 'srm_'
這是只有像srmyz這樣的文件才被查找出來,像absrmyz或者absrm這樣的文件都不符合要求,不被顯示,這樣查找文件的效率和可靠性就大大增強了。
四.根據文件的特徵查詢方法:
如果只知道某個文件的大小,修改日期等特徵也可以使用「find」命令查找出來,這和WINDOWS系統中的「搜索」功能是基本相同的。在微軟的「搜 索」中,「搜索助理」使得搜索文件和文件夾、列印機、用戶以及網路中的其他計算機更加容易。它甚至使在Internet上搜索更加容易。「搜索助理」還包 括一個索引服務,該服務維護了計算機中所有文件的索引,使得搜索速度更快。使用「搜索助理」時,用戶可以指定多個搜索標准。例如,用戶可以按名稱、類型及 大小搜索文件和文件夾。用戶甚至可以搜索包含特定文本的文件。如果用戶正使用Active Directory,這時還可以搜索帶有特定名稱或位置的列印機。
例如我們知道一個Linux文件大小為1,500bytes,那麼我們可是使用如下命令來查詢find /-size
1500c,字元c表明這個要查找的文件的大小是以bytes為單位。如果我們連這個文件的具體大小都不知道,那麼在Linux中還可以進行模糊查找方式 來解決。例如我們輸入find /-size+10000000c這個命令,則標明我們指定系統在根目錄中查找出大於10000000位元組的文件並顯示出來。命令中的「+」是表示要求系 統只列出大於指定大小的文件,而使用「-」則表示要求系統列出小於指定大小的文件。下面的列表就是在Linux使用不同「find"命令後系統所要作出的 查找動作,從中我們很容易看出在Linux中使用「find」命令的方式是很多的,「find」命令查找文件只要靈活應用,絲毫不比在WINDOWS中查 找能力差。
find / -amin -10 # 查找在系統中最後10分鍾訪問的文件
find / -atime -2 # 查找在系統中最後48小時訪問的文件
find / -empty # 查找在系統中為空的文件或者文件夾
find / -group cat # 查找在系統中屬於groupcat的文件
find / -mmin -5 # 查找在系統中最後5分鍾里修改過的文件
find / -mtime -1 #查找在系統中最後24小時里修改過的文件
find / -nouser #查找在系統中屬於作廢用戶的文件
find / -user fred #查找在系統中屬於FRED這個用戶的文件
<<<
linux查看路徑命令相關 文章 :
★ linux查看路徑命令
★ linux如何查找命令的路徑
★ linux查詢路徑命令
★ Linux系統中查看當前路徑的命令
★ linux查詢命令路徑
★ Linux中文件查找命令總結
★ linux查詢目錄命令
★ liunx find(文件查找)命令的介紹
★ Linux系統中tracert命令使用詳解
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm..com/hm.js?"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();㈡ 如何用find命令查找大於50M的文件
Linux下find命令在目錄結構中搜索文件,並執行指定的操作。Linux下find命令提供了相當多的查找條件,功能很強大。即使系統中含有網路文件系統,find命令在該文件系統中同樣有效。
命令格式:find 路徑 命令參數 [輸出形式]
需要使用的參數:
-size [+|-]n[cwbkMG] 查找文件打下為n文件。大小之後的字母表示單位,b-塊(512位元組)、 c表示位元組、w-字(2位元組)、k-千位元組、M-兆位元組、G-吉位元組,單位的默認值為b。加號表示大於指定大小,減號表示小於指定大小。
如果需要查找介於兩個大小之間的文件,可以重復設置-size參數兩次,一次使用加號+指定大於某一大小,一次使用減號-指定小於某一大小。
用法示例:查找HOME目錄下大於1M小於10M的文件
$ find ~ -size +1M -size -10M
㈢ Linux 史上最全命令大全
1、ls命令
cd /root
ls #顯示當前目錄下所有的非隱藏文件
ls -a #顯示當前目錄下所有文件,包含隱藏文件
ls -l #顯示當前目錄下所有的非隱藏文件的詳情
ls -al #顯示當前目錄下所有文件,包含隱藏文件 的詳情
ls -lh #以列表形式顯示當前目錄下所有的非隱藏文件的大小(K M T)
ls -alh #以列表形式顯示所有文件,包含隱藏文件的文件大小(K M T)
常用的組合:
ls
ll #等價於 ls -l
ls /etc #顯示/etc目錄下的文件
2:pwd命令
用來顯示當前所在的路徑
絕對路徑: 從/目錄開始的路徑
/root
/etc/sysconf
/opt/server/data-integration/libswt/win64
相對路徑: 相對當前的路徑
3、mkdir命令
cd /root
mkdir mytest #在當前目錄創建文件夾
mkdir -p 111/222/333 #一次創建多級文件夾
mkdir /root/mydemo #使用絕對路徑來創建
mkdir mydemo2 #使用相對對路徑來創建
4、rm命令
這個命令既可以刪除文件,也可以刪除目錄
刪文件:
cd /root
rm a.txt #刪除時,會給出提醒確認,輸入y刪除,n不刪除
rm -f b.txt #強制刪除 等價於 rm -f /root/b.txt
rm ../dir2/b.txt
touch a.java b.java c.java
rm a.java b.java c.java #一次可以刪除多個文件
rm *.java -fr #可以刪除當前目錄下的所有.java文件
cd dir
rm * -fr #刪除當前目錄的所有內容
刪目錄:
rm -r 111 #刪除目錄,依次提醒刪除
rm -rf mytest #強制刪除 等價於 rm mytest -fr
常用組合:
rm -fr 文件或目錄
5、cd命令
cd 命令可以進入一個目錄,類似於對windows上的文件夾進行雙擊
cd #直接cd 可以從任何一個目錄回到/root目錄
cd /root #進入root目錄
cd /opt/server/data-integration/system/
cd .. #回到上一級目錄
cd ../.. #回到上上一級目錄
cd - #可以在最近的兩次目錄之間切換
cd /root
mdkir dir1 dir2
cd dir1
cd ../dir2 #使用相對路徑 /中國/廣東省/深圳市/寶安區/留仙二路/78號
6、歷史命令和table補全
使用上下方向鍵可以找出歷史命令
table鍵:
cd /opt/ #兩次table可以列出/opt目錄下所有的文件和子目錄
cd /opt/s #一次table可以自動補全目錄內容,前提是/opt目錄下只有一個s開頭的目錄
7、touch命令
cd /root
touch a.java #在當前目錄創建a.txt文件
touch b.java c.java #創建多個文件
touch /root/d.java #通過絕對路徑創建
8、mv命令
移動:
1、mv 文件 目錄 #將文件移動到目錄中區
cd /root/dir1
touch a.txt
mv a.txt /root/dir2 #等價於 mv a.txt ../dir2
2、 mv 目錄1 目錄2 #將目錄1移動到目錄2下面(前提是目錄2必須存在)
cd /root
mv dir2 dir1 #將dir2移動到dir1下面
重命名:
1、mv 文件1 文件2 #給文件重命名(文件2不能存在)
cd /root
mv a.txt aaa.txt #將a.txt 重命名為aaa.txt
2、mv 目錄1 目錄2 #給目錄重命名(目錄2不能存在)
cd /root
mv dir1 dirx #將dir1重命名為dirx
9、cat命令
顯示文件內容
cd /root
cat user.txt
10、cp命令
復制文件
cd /root
cp user.txt user2.txt
cp user.txt /opt/ #將當前目錄的user.txt 復制到/opt目錄,文件名保持不變
cp user.txt /opt.user2.txt #將當前目錄的user.txt 復制到/opt目錄,文件名改為user2.txt
cp /opt/server/data-integration/pan.sh ./ #將指定目錄里的文件復制到當前目錄(.後邊的/可以去掉)
cp /opt/server/data-integration/pan.sh ./dirx #將指定目錄里的文件復制到當前目錄下的dirx目錄(.後邊的/比可以去掉)
cp /opt/server/data-integration/pan.sh /root/dirx #作用同上
11、解壓和壓縮
Linux的壓縮包後綴一般是: .tar.gz
解壓:
.tar.gz
將snappy-1.1.1.tar.gz上傳到/root/dir1目錄
tar -zxvf snappy-1.1.1.tar.gz #默認解壓到當前目錄
tar -xvf snappy-1.1.1.tar.gz #默認解壓到當前目錄
tar -xvf snappy-1.1.1.tar.gz -C /opt #將壓縮包解壓到/opt目錄
.zip格式
unzip mysql-connector-java-8.0.13.zip #默認解壓到當前目錄
unzip -d /opt mysql-connector-java-8.0.13.zip #解壓到指定目錄
壓縮:
.tar.gz
tar -czvf snappy-1.1.1.tar.gz snappy-1.1.1 #將snappy-1.1.1文件夾進行打包壓縮
tar -czvf /root/dir/snappy-1.1.1.tar.gz /opt/server/snappy-1.1.1
.zip格式
zip -r mysql-connector-java-8.0.13.zip mysql-connector-java-8.0.13/
12、find命令
用來實現文件的查找
find / -name 'a.txt' #從/目錄開始查找a.txt文件
find / -name 'ins*' #從/目錄開始查找以ins開頭的文件
find / -type f -size +100M #查找/目錄下文件大小大於100M的文件
13、grep命令
grep lang anaconda-ks.cfg #從anaconda-ks.cfg文件中查找包含lang的內容
14、ps命令
ps #查看依賴終端的進程
ps -ef #查看Linux系統中所有的進程
15、kill命令
kill -9 進程的pid #每次啟動進程時,pid會發生變化,但是進程運行期間pid不會變化
16、管道 |
管道就是把前邊命令的結果作為後邊命令的輸入
ps -ef | grep mysql #查找和mysql相關的進程
ll /etc | grep java #在/etc目錄中查找java相關的文件
17、用戶的操作
用戶創建和密碼設置
useradd itheima #創建新用戶itheima
passwd itheima #設置用戶itheima密碼
用戶刪除
userdel -r itheima #刪除用戶itheima
18、文件的許可權
所屬用戶: root 文件的創建者
所屬用戶組: root 和文件創建者在一個組的用戶
其他用戶: itcast 既不是文件創建者,也和文件創建者不在同一組
r: 可讀
w:可寫
x: 可執行
chmod命令:
方式1:
chmod u+rw a.txt #在所屬用戶之前的許可權基礎上添加可讀和可寫許可權
chmod u=rw a.txt #將所屬用戶的許可權直接修改為可讀,可寫
chmod +x #給所屬用戶,所屬用戶組和其他用戶全部加上可執行許可權
方式2:
chmod 777 a.txt #給所有用戶加上所有許可權
19、clear命令
用來清屏
快捷鍵: ctrl + l
20、history命令
用來查看所有的歷史命令
21:vi編輯器的使用
vi a.txt #打開a.txt文件
vim a.txt #vim是vi的增強
22、網路管理命令
hostname :查看主機名
修改主機名: /etc/hostname
ifconfig :查看ip地址
修改ip地址: /etc/sysconfig/network-scripts/ifcfg-ens33
服務問題:
service network restart
㈣ Linux下文件搜索、查找、查看命令
1、最強大的搜索命令:find 查找各種文件的命令
2、在文件資料中查找文件:locate
3、搜索命令所在的目錄及別名信息:which
4、搜索命令所在的目錄及幫助文檔路徑:whereis
5、在文件中搜尋字元串匹配的行並輸出:grep
6、分頁顯示一個文件或任何輸出結果:more
7、分頁顯示一個文件並且可以回頭:less
8、指定顯示前多少行文件內容:head
9、指定顯示文件後多少行內容:tail
10、查看一個文件:cat
11、查看文件內容多少字元多少行多少位元組:wc
12、排序文件內容:sort
一、根據 文件或目錄名稱 搜索
find 【搜索目錄】【-name或者-iname】【搜索字元】:-name和-iname的區別一個區分大小寫,一個不區分大小寫
eg:在/etc 目錄下搜索名字為init的文件或目錄
①、find /etc -name init (精準搜索,名字必須為 init 才能搜索的到)
②、find /etc -iname init (精準搜索,名字必須為 init或者有字母大寫也能搜索的到)
③、find /etc -name *init (模糊搜索,以 init 結尾的文件或目錄名)
④、find /etc -name init??? (模糊搜索,? 表示單個字元,即搜索到 init___)
二、根據 文件大小 搜索
eg:在根目錄下查找大於 100M 的文件
find / -size +204800
這里 +n 表示大於,-n 表示小於,n 表示等於
1 數據塊 == 512 位元組 0.5KB,也就是1KB等於2數據塊
100MB == 102400KB204800數據塊
三、根據 所有者和所屬組 搜索
①、在home目錄下查詢所屬組為 root 的文件
find /home -group root
②、在home目錄下查詢所有者為 root 的文件
find /home -user root
四、根據 時間屬性 搜索
find 【路徑】【選項】【時間】
選項有下面三種:-amin 訪問時間
-cmin 文件屬性被更改
-mmin 文件內容被修改
時間:+n,-n,n分別表示超過n分鍾,n分鍾以內和n分鍾
eg:在 /etc 目錄下查找5 分鍾內被修改過屬性的文件和目錄
find /etc -cmin -5
五、根據 文件類型或i節點 搜索
-type 根據文件類型查找:
f表示文件,d表示目錄,l表示軟鏈接
eg:查找 /home 目錄下文件類型是目錄的
find /home -type d
-inum 根據i節點查找
eg:查找 /tmp 目錄下i節點為400342的文件或目錄
find /tmp -inum 400342
六、組合條件 搜索
這里有兩個參數:
①、-a 表示兩個條件同時滿足(and)
②、-o 表示兩個條件滿足任意一個即可(or)
範例:查找/etc目錄下大於80MB同時小於100MB的文件
find /etc -size +163840 -a -size -204800
語法:locate【文件名】 -i 不區分大小寫
注意:這里和 find 命令是有區別的,find是全盤檢索,而locate 是在文件資料庫中進行搜索。所以locate命令的執行要比find命令執行速度快很多。但是這里有個問題,文件資料庫是需要不斷更新的。我們新創建的文件如果不更新 文件資料庫,使用 locate 是查找不到的。
updatedb 手動更新資料庫,但是對於/tmp目錄下的新建文件,是更新不到文件資料庫的,因為/tmp目錄不屬於文件資料庫的收錄范圍。
eg:locate hcf
功能描述:搜索命令所在的目錄及別名信息
語法:which【命令】
eg:which ls
功能描述:搜索命令所在的目錄及幫助文檔路徑
語法:whereis【命令】
eg:whereis ls
功能描述:在文件中搜尋字元串匹配的行並輸出
語法:grep -iv 【指定字元串】【文件】
-i 不區分大小寫
-v 排除指定字元串
eg:查找 /root/install.log 文件中包含 mysql 字元串的行,並輸出
grep mysql /root/install.log
本搜索工具,根據用戶指定的模式,對目標文件逐行進行匹配檢查,列印匹配到的行
grep是在文件中搜索匹配的字元串,是在文件中進行內容搜索,這個命令後面用到的比較多
描述:
分頁顯示一個文件或任何輸出結果
用於查看純文本文件(較長的)格式
格式:
more[選項] 文件
less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向後移動,而且 less 在查看之前不會載入整個文件。
head[必要參數][選擇參數][文件]
用於顯示指定文件開始多少行內容
命令參數:
-n 10 顯示前10行
-n -10 正常輸出但不顯示最後的10行
eg:顯示new.txt的前兩行內容
head -n 2 new.txt
head -2 new.txt
tail[必要參數][選擇參數][文件]
用於顯示指定文件末尾多少行內容
命令參數:
-n 10 顯示後面10行
-f 持續刷新顯示的內容
eg:顯示new.txt的末尾兩行內容
tail -n 2 new.txt
tail -2 new.txt
eg:指定從第二行開始顯示
tail -n +2 new.txt
描述:一次顯示整個文件內容
cat 命令 用於查看純文本文件(較短)
cat [選項] [文件]…
描述:wc 命令默認情況下會列印換行符數、單詞數和字元數。
用法:wc [選項] [文件]
用法:sort [選項] [文件]
轉自: Linux下文件搜索、查找、查看命令_黃小小的博客-CSDN博客_linux 搜索
㈤ linux中find命令的使用方法有哪些
Linux
find命令用來在指定目錄下查找文件。任何位於參數之前的字元串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件,並且將查找到的子目錄和文件全部進行顯示。
語法格式:
find path -option [ -print ] [ -exec -ok command ] {} ;
參數說明:
find根據下列規則判斷path和expression,在命令列上第一個-(),!之前的部分為path,之後的部分是expression。如果path是空字串則使用目前路徑,如果expression是空字串則使用-print為預設expression。
expression中可使用的選項有二三十個,在此只介紹常用的部分。
-mount,-xedv:只檢查和指定目錄在同一個文件系統下的文件,避免列出其他文件系統中的文件;
-amin n:在過去n分鍾內被讀取過;
-anewer file:比文件file更晚被讀取過的文件;
-atime n:在過去n天內被讀取過的文件;
-cmin n:在過去n分鍾內被修改過;
-cnewer file:比文件file更新的文件;
-ctime n:在過去n天內被修改過的文件;
-empty:空的文件-gid n or -group name:gid是n或是group名稱是name;
-ipath p,-path p:路徑名稱符合p的文件,ipath會忽略大小寫;
-name name,-iname name:文件名稱符合name的文件,iname會忽略大小寫;
-size n:文件大小是n單位,b代表512位元組的區塊,c表示字元數,k表示kilo bytes,w是二個位元組。
-type c:文件類型是C的文件。
㈥ linux中的find 命令怎麼查找介於 兩個大小之間的文件
Linux下find命令在目錄結構中搜索文件,並執行指定的操作。Linux下find命令提供了相當多的查找條件,功能很強大。即使系統中含有網路文件系統,find命令在該文件系統中同樣有效。
命令格式:find 路徑 命令參數 [輸出形式]
需要使用的參數:《Linux就該這么學》這本書上有詳細的介紹
-size [+|-]n[cwbkMG] 查找文件打下為n文件。大小之後的字母表示單位,b-塊(512位元組)、 c表示位元組、w-字(2位元組)、k-千位元組、M-兆位元組、G-吉位元組,單位的默認值為b。加號表示大於指定大小,減號表示小於指定大小。
如果需要查找介於兩個大小之間的文件,《linux就該這么學》可以重復設置-size參數兩次,一次使用加號+指定大於某一大小,一次使用減號-指定小於某一大小。
用法示例:查找HOME目錄下大於1M小於10M的文件
$ find ~ -size +1M -size -10M
㈦ linux find的用法
不明白問題所在阿,自問自答
man find
http://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html
這個真的要看你實現什麼功能
㈧ find linux 找到的文件怎樣大小
類似如下
find/data-size+160
意思是找/data目錄下大於10k的文件
㈨ 怎麼樣查看linux下佔用空間最大的文件
主要使用find和命令來實現。 1、使用find命令找到大於指定大小的文件: a.下例中查找大於10G的文件 [root@localhost data]# find / -type f -size +10G 將輸出: /usr/local/apache2/logs/access_log b.通過命令查看此文件的大小: [root@localhost data]# -h /usr/local/apache2/logs/access_log 24G /usr/local/apache2/logs/access_log c.重復執行find命令來查找大文件,例如:find / -type f -size +5G 找到大於5G的文件。 find / -type f -size +1G 找到大於1G的文件 2、可以遞歸使用 --max-depth=1
㈩ Linux find 命令詳解
find 命令的基本結構如下:
find [paths] [expression] [actions]
find 命令接受一個或多個 路徑 ( paths )作為搜索范圍,並在該路徑下 遞歸 地搜索。即檢索完指定的目錄後,還會對該目錄下的子目錄進行檢索,以及子目錄下的子目錄。。。直到到達目錄樹底部。
默認情況下(不帶任何搜索條件),find 命令會返回指定目錄下的 所有文件 ,所以常常需要通過特定的 expression 對結果進行 篩選 。
find 命令默認的 action 是將所有檢索結果列印至標准輸出。可以通過自定義 action ,讓 find 命令對搜索到的結果執行特定的操作。
這里先不做詳細解釋,簡單地測試下 find 命令:
find 命令中的 -name 選項可以根據文件名稱進行檢索( 區分大小寫 )。如需要忽略文件名中的大小寫,可以使用 -iname 選項。
-name 和 -iname 兩個選項都支持 wildcards 。如:
find /usr -name '*.txt' 查找 /usr 目錄下所有文件名以 .txt 結尾的文件
find /usr -name '????' 查找 /usr 目錄下所有文件名剛好為 4 個字元的文件
有些時候,你需要在搜索時匹配某個文件或目錄的 完整路徑 ,而不僅僅是匹配文件名。可以使用 -path 或 -ipath 選項。
如查找 /usr 下所有文件名以 .txt 結尾的文件或目錄,且該文件的父目錄必須是 src 。可以使用以下命令:
find /usr -path '*/src/*.txt'
如果只想搜索得到文件 或 目錄,即不想它們同時出現在結果中。可以使用 -type 選項指定文件類型。
-type 選項最常用的參數如下:
find /usr -type d -name 'python*' 檢索 /usr 下所有文件名以 python 開頭的 目錄
find 命令支持 -empty 選項用來檢索 為空 的文件或目錄。空文件即文件里沒有任何內容,空目錄即目錄中沒有任何文件或子目錄。
find ~ -type d -empty 檢索用戶主目錄下所有的空目錄
find 命令也允許用戶對當前的匹配條件進行 「反義」 (類似於 邏輯非 操作)。
如需要檢索 /usr 下所有文件名 不 以 .txt 為後綴的文件。可以使用以下命令:
find /usr -type f ! -name '*.txt'
也可以「翻轉」任何其他的篩選條件,如:
find /usr -type f ! -empty 檢索 /usr 下所有內容不為空的文件
為了檢索歸屬於特定用戶的文件或目錄,可以使用 -user 選項。
find / -type f -user starky 檢索根目錄下所有屬主為 starky 的文件
類似於 -user 選項, -group 選項則可以根據文件或目錄的 屬組 進行檢索。
有些時候,需要根據文件創建或修改的時間進行檢索。
Linux 系統中,與文件相關聯的時間參數有以下三種:
與此對應的是 find 命令中的 -mtime , -atime 和 -ctime 三個選項。
這三個選項的使用遵循以下示例中的規則:
find /usr -type f -mtime 2 檢索 /usr 下兩天前被修改過的文件
如果覺得 -mtime 等選項以 天 為單位時間有點長,還可以使用 -mmin , -amin , -cmin 三個選項:
find /usr -type f -mtime +50 -mtime -100 檢索 /usr 下 50 到 100 天之前修改過的文件
find /usr -type f -mtime 2 -amin 5 檢索 /usr 下兩天前被修改過且 5 分鍾前又讀取過的文件
-size 選項允許用戶通過文件大小進行搜索(只適用於文件,目錄沒有大小……)。
表示文件大小的單位由以下字元組成:
另外,還可以使用 + 或 - 符號表示 大於 或 小於 當前條件。
find / -size +1G 檢索文件大小高於 1 GB 的文件
find 命令可以使用 -perm 選項以文件許可權為依據進行搜索。
如需要檢索 /usr 目錄下許可權為 rwxr-xr-x 的文件,可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx
搜索 /usr 目錄下所有許可權為 r-xr-xr-x (即系統中的所有用戶都只有讀寫許可權)的文件和目錄,可以使用以下命令:
find /usr -perm a=rx
很多時候,我們只想匹配文件許可權的一個 子集 。比如,檢索可以直接被任何用戶執行的文件,即只關心文件的執行許可權,而不用管其讀寫許可權是什麼。
上述的需求可以通過以下命令實現: find / -type f -perm /a=x
其中 a=x 前面的 / 符號即用來表示只匹配許可權的某個子集(執行許可權),而不用關心其他許可權的具體設置。
-perm 選項也支持數字形式的文件許可權標記。
find /usr -perm 644 搜索 /usr 目錄下許可權為 644 (即 rwxr-xr-x )的文件
find 命令默認是以 遞歸 的方式檢索項目的,這有時候會導致得到的結果數量非常巨大。可以使用 -maxdepth 限制 find 命令遞歸的層數。
find / -maxdepth 3 搜索時向下遞歸的層數最大為 3
在之前的例子中有出現多個搜索條件的 組合 以及對某個搜索條件的 反轉 。
實際上 find 命令支持 「and」 和 「or」 兩種邏輯運算,對應的命令選項分別是 -a 和 -o 。通過這兩個選項可以對搜索條件進行更復雜的組合。
此外還可以使用 小括弧 對搜索條件進行 分組 。注意 find 命令中的小括弧常需要用 單引號 包裹起來。因小括弧在 Shell 中有特殊的含義。
如檢索 /usr 下文件名以 python 開頭且類型為目錄的文件
find /usr -type d -name 'python*'
該命令等同於:
find /usr -type d -a -name 'python*'
更復雜的組合形式如:
find / '(' -mmin -5 -o -mtime +50 ')' -a -type f
-delete 選項可以用來刪除搜索到的文件和目錄。
如刪除 home 目錄下所有的空目錄:
find ~ -type d -empty -delete
-exec 選項可以對搜索到的結果執行特定的命令。
如需要將 home 目錄下所有的 MP3 音頻文件復制到移動存儲設備(假設路徑是 /media/MyDrive ),可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ''
其中的 大括弧 ( {} )作為檢索到的文件的 佔位符 ,而分號( ; )作為命令結束的標志。因為分號是 Shell 中有特殊含義的符號,所以需要使用單引號括起來。
每當 find 命令檢索到一個符合條件的文件,會使用其完整路徑取代命令中的 {} ,然後執行 -exec 後面的命令一次。
另一個很重要的用法是,在多個文件中檢索某個指定的字元串。
如在用戶主目錄下的所有文件中檢索字元串 hello ,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ''
創建 Gzip 格式的壓縮文件的命令為: tar -czvf filename.tar.gz <list of files>
現在假設需要將用戶主目錄下所有的 MP3 文件添加到壓縮包 music.tar.gz 中,直觀的感覺是,其命令應為如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ''
實際情況是,這樣得到的 music.tar.gz 其實只包含一個 MP3 文件。
原因是 find 命令 每次 發現一個音頻文件,都會再執行一次 -exec 選項後面的壓縮命令。導致先前生成的壓縮包被覆蓋。
可以先讓 find 命令檢索出所有符合條件的音頻文件,再將得到的 文件列表 傳遞給後面的壓縮命令。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +
如果想瀏覽搜索到的文件(目錄)的詳細信息(如許可權和大小等),可以直接使用 -ls 選項。
find / -type file -size +1G -ls 瀏覽所有 1G 以上大小的文件的詳細信息
A Guide to the Linux 「Find」 Command
find 命令手冊 : man find