2009年11月5日 星期四
2009年11月4日 星期三
Linux下Tomcat6.0 應用服務部署
軟件:jdk6.bin、apache-tomcat-6.0.18.tar
程序包:customer.war,customerService.war,FrontProject.war,expressBackUser.war,
expressAccount,expressPlatform.war,OrderDispose.war,OrderDisposeTest.war
二.安裝jdk
1).移動jdk到安裝目錄;
2).賦予執行權限:chmod u+x jdk6.bin
3).執行命令:./jdk6.bin
4).用mv命令把jdk1.6.0_01給它改個名字叫jdk1.6
5).開始設置環境變量:
vi /etc/profile.d/java.sh
在profile.d/java.sh文件的最後添加如下代碼
#set java environment
JAVA_HOME=/usr/local/hzcms/jdk6
export JAVA_HOME
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin
export PATH
保存退出
使變量生效source ./profile.d/java.sh
6)命令java -version(顯示的版本比實際版本號低的情況可能是操作系統的原因)
如果安裝成功會出現java的版本信息
三.安裝tomcat6.0
1).解壓:tar zxvf apache-tomcat-6.0.18.tar.gz
2).將apache-tomcat-6.0.18的文件名修改為tomcat6.0
命令為:mv apache-tomcat-6.0.18tomcat6.0
3).#cd /tomcat6.0/bin
#./startup.sh //啟動tomcat
此時tomcat開始啟動,等啟動完成後,在地址欄輸入
http://ip:8080就可以看見熟悉的大貓了。
#./shutdown.sh //停止tomcat
4).tomcat6.0自啟動
修改/etc/rc.d/rc.local文件,添加以下內容:
export JDK_HOME=/usr/local/bycw/jdk1.6
export JAVA_HOME=/usr/local/bycw/jdk1.6
/usr/local/bycw/tomcat6.0/bin/startup.sh
四.修改tomcat內存
在catalina.sh開頭增加這麼一行
JAVA_OPTS='-Xms1536m -Xmx1536m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m'
source: http://space.itpub.net/21070542/viewspace-606594
2009年11月2日 星期一
2、列出mysql現行環境
mysqladmin variables -u root -p <==使用指令
mysql>show variables; <==使用mysql語法
============================================================================================
3、登入資料庫
mysql -u root -p towns <==使用root帳號,登入towns資料庫
mysql -h localhost -u root -p towns <==使用root帳號登入本機端的towns資料庫, 做網路管理時,-h很重要
============================================================================================
4、建立資料庫
4.1 mysql -u root -p <==使用root登入mysql
4.2 打入root密碼
4.3 create database towns; <==使用mysql語法,新增towns這個資料庫,“;”一定要加
4.4 mysqladmin -u root create cacti -p <==也可以用指令建立資料庫
============================================================================================
5、刪除資料庫
5.1 mysql -u root -p <==使用root登入mysql
5.2 打入root密碼
5.3 drop database towns; <==使用mysql語法,刪除towns這個資料庫,“;”一定要加
============================================================================================
6、列出現有資料庫、資料表、資料欄
6.1 mysql -u root -p <==使用root登入mysql
6.2 打入root密碼
6.3 show databases;
6.4 mysql -e "show databases; " -p <==用指令顯示資料庫
6.5
------------------------------------------------------------------------------------------------------------------------------------
6.1 mysqlshow -u root -p <==使用root登入mysql,並列出所有的資料庫
6.2 mysqlshow -u root -p towns <==使用root登入mysql,並列towns資料庫中的資料表
6.3 mysqlshow -u root -p towns towns <==使用root登入mysql,指定towns資料庫,並列出towns資料表
資料來源:http://tsuozoe.pixnet.net/blog/post/21283890
============================================================================================
7、匯入資料庫
7.1 需先建立資料庫(如4),可以看一下,dump下來的語法中,是否有下CREATE DATABASE,有就不用建了
7.2 mysql -u root -p abc <'/home/towns/abc/abc.sql' <==將abc.sql匯入abc資料庫中
============================================================================================
8、匯出資料庫
8.1 資料庫需存在
8.2 mysqldump -u root -p abc >'/home/towns/abc/abc.sql' <==將abc資料庫匯出到abc.sql檔案
============================================================================================
9、新增使用者(需先登入mysql server)
9.1 使用grant新增
9.1.1 grant all on abc.* to towns identified by 'abc123' with grant option;
建立towns使用者具有abc完整的管理權,密碼為abc123
9.1.2 grant all on abc.* to towns@localhost identified by 'abc123' with grant option;
建立本機端towns使用者具有abc完整的管理權,密碼為abc123
9.1.3 grant all on *.* to towns@localhost identified by 'abc123' with grant option;
建立本機端towns使用者具有所有資料庫完整的管理權,密碼為abc123
9.1.3.1 grant all on *.* to towns@localhost identified by 'abc123';
與上面的方法相同,獨缺“允許特權”
9.2 使用INSERT
9.3 CREATE USER
--------------------------------------------------------------------------------------------
9.4 變更密碼
9.4.1 grant all on *.* to towns@localhost identified by '123abc' with grant option;
將towns使用者的密碼,由abc123變成123abc
9.4.2 SET PASSWORD FOR 'root'@'localhost.localdomain' = PASSWORD( '*******' )
SET PASSWORD FOR 'root'@'localhost' = PASSWORD( '*******' )
============================================================================================
10、刪除使用者
10.1 DELETE FROM mysql.user WHERE User='towns' ;
刪除使用者towns
10.2 DROP USER test@localhost;
============================================================================================
11、登入資料庫帳號、密碼常見檔案位置
============================================================================================
12、更新資料庫資料(在做任何更動後,建議要使用這指令)
12.1 flush privileges;
============================================================================================
13、在作業系統中,檢查權限之命令
13.1 mysqlaccess localhost user mysql -U root -P abc123 <==檢查user帳號的權限
13.2 mysqlaccess localhost towns abc123 -U root -P abc123 <==檢查towns帳號的權限
============================================================================================
14、權限管理
14.1 grant SELECT,INSERT,UPDATE on abc.* to towns@localhost identified by 'abc123';
開放三種權限(SELECT,INSERT,UPDAT)給towns(本機端),管理o2secure所有的表格
14.2 開放多個資料庫(o2secure、test、abc)給一個帳號(towns)管理,需一條一條加
grant all on abc.* to towns@localhost identified by 'abc123';
grant all on test.* to towns@localhost identified by 'abc123';
grant all on abc.* to towns@localhost identified by 'abc123';
--------------------------------------------------------------------------------------------
14.3 權限
資料庫(DateBase),十五種權限:
ALL PRIVILEGES、ALTER、CREATE、DELETE、DROP、FILE、INDEX、INSERT、PROCESS、REFERENCES、RELOAD、SELECT、SHUTDOWN、UPDATE、USAGE
資料表(Table),八種權限:
SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER
資料欄(column),三種權限:
SELECT INSERT UPDATE
修改權限
14.4 REVOKE 權限 ON 資料庫(或資料表TABLE) TO user@host IDENTIFIED BY '密碼';
============================================================================================
GRANT ALL PRIVILEGES ON `abc` . * TO abc@% WITH GRANT OPTION ;
DROP USER towns@';
DROP USER test@localhost';
---------------------------------------------------------------------------------------------
CREATE USER test@localhost IDENTIFIED BY '********';
GRANT USAGE ON * . * TO test@localhost IDENTIFIED BY '********' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
SET PASSWORD FOR root@localhost = PASSWORD( '*********' ) <==在資料庫中修改密碼方式
===============================================================================================
16.忘記root密碼處理方式
Linux:
1.使用root登入
2.停止mysql服務(for redhad base)
service mysqld stop
3.使用mysqld_safe指令
mysqld_safe --skip-grant-tables &
此時,會開啟一個安全模式,並停住
4.開新的ssh,用root登入系統
5.使用mysql帳號登入mysql中
6.變更mysql中root密碼
update user set password = password('abc123') where user = 'root';
7.離開mysql
8.重新啟動mysql
9.使用root新密碼登入mysql
-----------------------------------------------------------------------------------------------
Windows:
1.用系統管理員登陸系統。
2.停止MySQL的服務。
3.進入命令視窗,然後進入MySQL的安裝目錄,比如我的安裝目錄是c:\mysql,進入C:\mysql\bin
4.跳過許可權檢查啟動MySQL,
c:\mysql\bin>mysqld-nt --skip-grant-tables 軟體發展網
5.重新打開一個視窗,進入c:\mysql\bin目錄,設置root的新密碼
c:\mysql\bin>mysqladmin -u root flush-privileges password "198651"
c:\mysql\bin>mysqladmin -u root -p shutdown
將newpassword替換為你要用的root的密碼,第二個命令會提示你輸入新密碼,重複第一個命令輸入的
密碼。
6.停止MySQL Server,用正常模式啟動Mysql
軟體發展網
7.你可以用新的密碼連結到Mysql了。
命令:
軟體發展網
net mysql start 啟動MYSQL
net stop mysql 停止MYSQL
軟體發展網
下面以在Windows系統上為例,linux上將步驟2的mysqld-nt換為safe_mysqld即可
1 、停止mysql5服務:
net stop mysql5
2、開一個DOS視窗執行:
http://www.mscto.com
c:\mysql\bin>mysqld-nt --skip-grant-tables &
3、再開一個DOS視窗執行:
c:\mysql\bin>mysql mysql
> update user set password = password('123456') where user = 'root';
root密碼即為設置為123456!
4、啟動mysql5服務:
net start mysql5
相關資料:http://www.mscto.com/MySQL/20080731665.html
===============================================================================================
17.顯示目前mysql連線的threads狀態
mysql>show processlist; <==使用mysql語法
mysqladmin processlist -u root -p <==使用指令
===============================================================================================
18.列出MySQL目前的狀態
mysql> show status; <==使用mysql語法
mysqladmin status -u root -p <==使用指令(結果不同)
===============================================================================================
19.列出mysql的使用者
SELECT User FROM mysql.user Order by User;
帳號管理
mysql中,帳號可設為僅本機使用、僅網路使用、兩者皆可,與mysql安全性有關
mysql>grant all on *.* to towns@localhost identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、只能本機連線,擁有最大權限
mysql>grant all on *.* to towns01@localhost identified by 'abc123';
利用語法建立towns可以管理所有資料庫、只能本機連線,少了grant權限,其他都有
mysql>grant all on *.* to towns02@ identified by 'abc123' with grant option;
利用語法建立towns可以管理所有資料庫、能外部及本機連線,擁有最大權限
towns@locahost <==只能本機連線
towns@192.168.8.176 <==只能192.168.8.176連線,用於限制帳號連線IP
towns@127.0.0.1 <==只能本機連線
towns@locahost.localdomain <==只能本機連線
towns@ <==不限制連線來源,危險的設定,不過local不能連
19.mysql -e "GRANT ALL PRIVILEGES ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser' ; "
利用指令來新增帳號
===============================================================================================
20.更換資料庫
登入mysql後,選用某個資料庫
mysql> use cacti; <==連入cacti資料庫
21.顯示資料庫的資料表(需先選好資料庫,才能show tables)
mysql> show tables;
mysql -e "use cacti; show table; " -p <==直接使用指令下SQL語法,並使用root登入(沒設user預設為root
===============================================================================================
22.免密碼登入mysql資料庫(用於資料庫定期備份等……)
1.vim ~/.my.cnf
[client]
password=YOUR_MYSQL_PASSWORD
2.chmod 600 ~/.my.cnf
設定完成後,直接使用mysql -u [user],就可以登入了
JSP+MYSQL UTF8中文亂碼
方法1
通通用big5
方法2
MySQL字元集設成UTF-8 Unicode
欄位的整理設成utf8_general_ci
JDBC的URL
String url = "jdbc:mysql://localhost/database?useUnicode=true&characterEncoding=utf-8";
網頁上有讓使用輸入中文的地方(JSP)鍵入request.setCharacterEncoding("UTF-8");
方法3
更改my.ini(Mysql的組態設定)
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
不過通常第二個方法用下去就OK了
或者用hibernate 的話,
2009年10月26日 星期一
MySQL使用rand函數實現隨機數
有朋友問到如何在mysql中使用隨機數
如何寫一個語句能一下更新幾百條MYSQL數據!
需要測試MYSQL數據庫,裡面有一個上萬條數據的數據庫,如何寫一個PHP文件一下每次更新幾百條信息,我都是寫一個循環一次更新一條信息,這樣我知道用WHILE寫就可以了,要是一次更新好比100條數據改如何寫呢!
謝謝
正確答案是:UPDATE cdb_posts SET views = rand();
順便給你找了點關於mysql rand函數的實例,如下:
那就在insert 命令中,value()裡面用rand(),注意字段寬度是否夠一直以為mysql隨機查詢幾條數據,就用
就可以了。
但是真正測試一下才發現這樣效率非常低。一個15萬餘條的庫,查詢5條數據,居然要8秒以上
查看官方手冊,也說rand()放在ORDER BY 子句中會被執行多次,自然效率及很低。
You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.
搜索Google,網上基本上都是查詢max(id) * rand()來隨機獲取數據。
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;
但是這樣會產生連續的5條記錄。解決辦法只能是每次查詢一條,查詢5次。即便如此也值得,因為15萬條的表,查詢只需要0.01秒不到。
上面的語句採用的是JOIN,mysql的論壇上有人使用
FROM `table`
WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` )
ORDER BY id LIMIT 1;
我測試了一下,需要0.5秒,速度也不錯,但是跟上面的語句還是有很大差距。總覺有什麼地方不正常。
於是我把語句改寫了一下。
WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`)))
ORDER BY id LIMIT 1;
這下,效率又提高了,查詢時間只有0.01秒
最後,再把語句完善一下,加上MIN(id)的判斷。我在最開始測試的時候,就是因為沒有加上MIN(id)的判斷,結果有一半的時間總是查詢到表中的前面幾行。
完整查詢語句是:
WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))
ORDER BY id LIMIT 1;
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;
最後在php中對這兩個語句進行分別查詢10次,
前者花費時間 0.147433 秒
後者花費時間 0.015130 秒
看來採用JOIN的語法比直接在WHERE中使用函數效率還要高很多。
source:http://blog.24reader.com/vincentlam
2009年9月18日 星期五
Sun和Java Swing 2.0的故事
在09年1月26日,Jonathan Giles發表了他的博客:“Java Swing 2.0”,要求Sun對Swing進行合理的改進。
Jonathan Giles寫道
我相信不基於JavaFX的Swing 2.0的改進非常必要,基於Java框架,專注於桌面開發。我和很多開發者交換了意見,我們認為Swing 2.0應該有以下改進:
Generics- based基於範型:我們不再需要將我們的對象放入不同的Swing數據模型和組件中,只是為了接受返回對象。它應該能夠通過指定數據類型創建swing 模型和組件。現在已經有了一個Swing-generics project項目,雖然發展的有點慢,但是Swing2.0應該包含這個項目,不需要重複工作。
Support for enumerations支持枚舉:這個需要是非常明顯的,很多public static final int數據應該由枚舉替換。這可以讓API乾淨很多。
改進對collection frameworks的支持:這就是說我們不需要一直使用Vector lists,除非絕對需要同步。
對事件分發線程event dispatch thread (EDT)規則的嚴格強制:Swing一直速度很慢,這並不是事實,但是讓人們這樣感覺,這個感覺存在,因為開發者不理解如何控制處理EDT .現存代碼缺乏關於EDT規則相關的強制,於是不能在EDT上運行的任務執行時間很長。所以,缺省的,Swing 2.0必須進行EDT驗證,拋出所有異常。這會讓開發者不爽,但是結果會讓程序運行更快,讓用戶滿意。這很值得。
改進bean綁定和驗證:我不會說到我們需要properties那麼遠,是因為還沒有足夠的信息給出確認的意見,我知道 JGoodies beans binding and validation非常有用,讓創建數據驅動用戶界面容易並且迅速。 Swing 2.0也應該吸取這些優點。
這篇博客得到了大量的回復和轉載,在Swing社區引起了強烈反饋。 Sun也隨後在官方博客“Swing and JDK 7”上做了回應:
sun寫道
Swing對於Sun非常重要,我們擁有大量的開發者在Swing上開發,Swing在Sun的未來開發藍圖中,在富客戶端應用RIA方面,以及其他所有方面都擁有重要位置。
JavaFX也使用了很多Swing的組件和桌面工具,Sun很欣喜的看到基於Swing出現了很多優秀的項目,比如: Griffon, Thinlet, Pivot和LWUIT等等。
所以,我們提升了Swing的重要性,甚至比JavaFX的下一個版本,甚至比Java SE 6更重要,將花大力氣彌補Swing作為UI工具的一些不足,比如讓Swing開發更加簡單,比如更好的運行時runtime部署和性能優化。這些方面的 進展讓Swing開發者獲益,並且也讓其他依賴Swing的技術也獲得優勢。
對於Sun來說,在JDK 6向JDK 7轉移的期間,首先最重要的是讓運行時runtime更加輕量化,更快下載,更快啟動,對瀏覽器兼容更好,提升runtime性能。在Java SE 6u10中,已經得到體現。第二個就是Swing了,讓臃腫的Swing減少模板代碼和概念上的複雜性,開發典型的Swing應用將使用JDK 7中的Swing Application Framework.
Sun將通過OpenJDK讓Sun以外的開發者更加容易為Swing貢獻代碼,我們已經和XRender pipline team團隊合作為Java在Unix平台上提供更好的圖形加速性能。在JDK 7中,我們將加入組件類似JXLayer, DatePicker,和CSS styling等等。
我們也熱切希望能夠在JavaFX中使用Swing的功能,尤其對聽到什麼類型Swing應用能夠需要嵌入JavaFX組件有興趣。
綜上,就是Sun保證對Swing繼續開發,並且在JDK 7中加入Swing Application Framework.
現在Sun也遵守了諾言,Swing Application Framework (SAF)開始向社區徵詢意見。
Alexander Potochkin發表了博客“Swing Application Framework is back again”。他提出了SAF面臨的問題,比如在同一個JVM中運行兩個SingleFrameApplication衝突的問題;在Mac操作系統 上,Swing很難提供原生的用戶界面等。希望SAF能夠成為一個理想的框架,解決Swing遇到的問題,過渡到Swing 2.0.
2009年9月1日 星期二
Linux Find Command example
find可以指定查找條件如名稱,類型,時間,文件大小,權限和所有者查找,針對多個條件進行與或非的邏輯運算。我們可以控制find的查找的行為,還可以和其他命令組合使用。
find
find .
find . -print
三者等效,查找當前目錄下所有的文件和目錄(遞歸子目錄),以每行一個文件或者目錄的形式列舉出,不包含隱藏文件
find lib opt bin
同上,查找指定的多個目錄(lib/opt/bin)
(1)指定查找條件
1)按名稱查找
find . -name readme.txt
查找當前目錄下(遞歸子目錄)的所有名為readme.txt的文件
find . -name \*.txt
find . -name "*.txt"
查找當前目錄下(遞歸子目錄)的所有名稱以.txt結尾的文件,注意*號的寫法,需要前面加\或者放到雙引號中
find . -iname \*.txt
默認find是區分大小寫的,如果不想區分大小寫,請使用-iname替代-name,如上則"abc.TXT"將被查找到
2)按類型查找
find . -type d
查找當前目錄下(遞歸子目錄)的所有目錄
find . -type f
查找當前目錄下(遞歸子目錄)的所有文件
find . -type l
查找當前目錄下(遞歸子目錄)的所有符號鏈接
3)按時間查找
1.以小時為單位的時間
find命令三個選項用於按照時間查找,單位都是小時:
mtime —文件內容上次修改時間
atime —文件被讀取或訪問的時間
ctime —文件狀態變化時間
這三個選項都需要配置一個n值使用,可以是-n / n / +n:
-n小於n
n正好與n相等
+n大於n
find . -mtime -1
查找當前目錄下(遞歸子目錄)的所有1小時內修改的文件和目錄
find . -mtime +1
查找當前目錄下(遞歸子目錄)的所有修改時間超過1小時的文件和目錄
find . -mtime 1
查找當前目錄下(遞歸子目錄)的所有恰好在1小時前修改的文件和目錄
2.以分鐘為單位的時間
用法和*time類似,mmin、amin和cmin的不同在於單位時間是分鐘,用於查找在不到1小時的時間內變化了的文件和目錄
find . -mmin -10
查找當前目錄下(遞歸子目錄)的所有10分鐘內修改的文件和目錄
find . -mmin +20
查找當前目錄下(遞歸子目錄)的所有20分鐘外1小時內修改的文件和目錄
3.與特定的文件比較
-newer,-anewer和-cnewer選項用於查找與特定的文件比較的已修改或訪問過的文件,類似mtime,atime和ctime
-newer指內容最近被修改的文件
-anewer指最近被讀取過的文件
-cnewer指狀態最近發生變化的文件
find . -newer a.txt
查找當前目錄下(遞歸子目錄)的所有修改時間在a.txt之後(所以文件更新)的文件和目錄
4)按文件大小查找
1. -size選項用於查找滿足指定的大小條件的文件(注意不查找目錄), +表示大於, -表示小於,沒有+1表示正好等於。文件大小的單位可以是字節(用c表示), kb(用k表示)。
find . -size -100c
查找當前目錄下(遞歸子目錄)的所有文件大小小於100字節的文件
find . -size +100k
查找當前目錄下(遞歸子目錄)的所有文件大小大於100k的文件
find . -size 0
查找當前目錄下(遞歸子目錄)的所有文件大小為0的文件
2. -empty查找空文件和空文件夾,和-size 0不同的在於-size 0只查找空文件,或者說-empty -type f等同於-size 0 :
find . -empty
查找當前目錄下(遞歸子目錄)的所有文件大小為0的文件和空文件夾
find . -empty -type f
查找當前目錄下(遞歸子目錄)的所有文件大小為0的文件
find . -empty -type d
查找當前目錄下(遞歸子目錄)的所有空目錄
5)按權限和所有者查找
find . -perm 777
查找當前目錄下(遞歸子目錄)的所有權限為777的文件和目錄
find . -perm -u=rwx
查找當前目錄下(遞歸子目錄)的所有user權限為rwx的文件和目錄
find . -perm -ug=x
查找當前目錄下(遞歸子目錄)的所有user和group權限為x的文件和目錄
find . -user sky
查找當前目錄下(遞歸子目錄)的所有user為sky的文件和目錄
find . -group users
查找當前目錄下(遞歸子目錄)的所有group為users的文件和目錄
(2)查找條件的邏輯運算
1.邏輯與
find . -name "*.java" -size -mmin -10
find . -name "*.java" -a -size -mmin -10
查找當前目錄下(遞歸子目錄)的所有名為*.java並且修改時間在10分鐘之內的文件,-a是默認選項
2.邏輯或
find . -name "*.class" -o -name "*.jar"
查找當前目錄下(遞歸子目錄)的所有名為*.class或者*.jar的文件和目錄
3.邏輯非
find . ! -user sky
查找當前目錄下(遞歸子目錄)的所有user不是sky的文件和目錄
(3)控制查找的行為
find . -maxdepth 3 -name "*.txt"
查找當前目錄下(遞歸子目錄)的所有名為*.txt的文件,目錄深度不超過3層
find . -maxdepth 1 -name "*.txt"
查找當前目錄下(不遞歸子目錄,因為maxdepth為1)的所有名為*.txt的文件
find . -mindepth 3 -name "*.txt"
查找當前目錄下(遞歸子目錄)的所有名為*.txt的文件,目錄深度不低於3層
find . -mindepth 1 -name "*.txt"
查找當前目錄下的子目錄中(遞歸子目錄)的所有名為*.txt的文件,不包含當前目錄
find . -depth -name "*.txt"
查找當前目錄下(遞歸子目錄)的所有名為*.txt的文件,每個目錄都是先在目錄中進行查找,然後才繼續查找其子目錄
(4) find和其他命令的組合
find . -name "*.jar" -exec ls -l {} \;
find . -name "*.jar" -ls
查找當前目錄下(遞歸子目錄)的所有*.jar文件並使用ls -l列出詳細信息
find . -name "*.java" -exec grep HashMap {} \;
查找當前目錄下(遞歸子目錄)的所有的含有"HashMap"字樣的*.java文件
find . -name "*.sh" -exec mv {} backup \;
查找當前目錄下(遞歸子目錄)的所有的*.sh文件並移動到backup目錄中
source: http://www.blogjava.net/aoxj