记录下linux下find命令查找的常用用法

find命令是linux非常常用的命令,这里记录下find命令查找多种类型文件的用法。

1.匹配多种类型的文件。

一般下面两种做法就够用:
1)使用-name或者-iname选项,后者忽略大小写,再用-o选项连接来搜索多种类型文件。-o表示or或的意思。
$ find ./ -name "*.mk" -o -name "*.java" -type f
./tests/src/com/android/voicedialer/VoiceDialerLaunchPerformance.java
./tests/Android.mk
./CleanSpec.mk
./src/com/android/voicedialer/VoiceContact.java
./src/com/android/voicedialer/VoiceDialerActivity.java
./src/com/android/voicedialer/RecognizerEngine.java
./src/com/android/voicedialer/VoiceDialerReceiver.java
./src/com/android/voicedialer/CommandRecognizerEngine.java
./src/com/android/voicedialer/RecognizerLogger.java
./src/com/android/voicedialer/PhoneTypeChoiceRecognizerEngine.java
./src/com/android/voicedialer/VoiceDialerTester.java
./src/com/android/voicedialer/RecognizerClient.java
./Android.mk
注意:需要将匹配内容用双引号括起来,防止未知错误,比如只搜索了当前目录的文件。


2)使用-regex或者-iregex选项,后者忽略大小写,该选项使用正则表达式匹配整个路径,与-name不同。
$ find ./ -regex ".*\.mk$\|.*\.java$" -type f
./tests/src/com/android/voicedialer/VoiceDialerLaunchPerformance.java
./tests/Android.mk
./CleanSpec.mk
./src/com/android/voicedialer/VoiceContact.java
./src/com/android/voicedialer/VoiceDialerActivity.java
./src/com/android/voicedialer/RecognizerEngine.java
./src/com/android/voicedialer/VoiceDialerReceiver.java
./src/com/android/voicedialer/CommandRecognizerEngine.java
./src/com/android/voicedialer/RecognizerLogger.java
./src/com/android/voicedialer/PhoneTypeChoiceRecognizerEngine.java
./src/com/android/voicedialer/VoiceDialerTester.java
./src/com/android/voicedialer/RecognizerClient.java
./Android.mk
注意:这里是正则表达式,一些字符比如点.的含义与-name中用到的有区别,而且是对整个路径匹配,不只是basename。

上面两个命令,实现了类似的功能,搜索列出以.mk和.java结尾的文件。

2.匹配除需要类型之外的文件

跟上面差不多,也是用-name或-regex选项,配合-not,-a等逻辑控制。-a表示and与的意思。-not可用!代替。
1)使用-name或者-iname选项
$ find ./ ! -name "*.java" -a ! -name "*.xml" -type f
./res/drawable-mdpi/ic_vd_retry.png
./res/drawable-mdpi/ic_vd_mic_on.png
./res/drawable-mdpi/ic_vd_mic_off.png
./res/drawable-mdpi/ic_vd_green_key.png
./res/drawable-mdpi/app_voicedialer.png
./res/drawable-hdpi/ic_vd_retry.png
./res/drawable-hdpi/ic_vd_mic_on.png
./res/drawable-hdpi/ic_vd_mic_off.png
./res/drawable-hdpi/ic_vd_green_key.png
./res/drawable-hdpi/app_voicedialer.png
./tests/Android.mk
./NOTICE
./CleanSpec.mk
./.git/HEAD
./.git/index
./Android.mk
./MODULE_LICENSE_APACHE2

2)使用-regex或者-iregex选项,因为posix的正则表达式不支持环视功能,所以需配合-not逻辑。
$ find ./ -not -regex ".*\(\.xml\|\.java\)$" -type f
./res/drawable-mdpi/ic_vd_retry.png
./res/drawable-mdpi/ic_vd_mic_on.png
./res/drawable-mdpi/ic_vd_mic_off.png
./res/drawable-mdpi/ic_vd_green_key.png
./res/drawable-mdpi/app_voicedialer.png
./res/drawable-hdpi/ic_vd_retry.png
./res/drawable-hdpi/ic_vd_mic_on.png
./res/drawable-hdpi/ic_vd_mic_off.png
./res/drawable-hdpi/ic_vd_green_key.png
./res/drawable-hdpi/app_voicedialer.png
./tests/Android.mk
./NOTICE
./CleanSpec.mk
./.git/HEAD
./.git/index
./Android.mk
./MODULE_LICENSE_APACHE2

上面两个都匹配.xml和.java之外的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值