在我的 Mac 上,我搞砸了我的 android SDK 安装。我想通过找到所有对“android”的引用来清理它。
问题是,当我运行命令时,find / -name "*android*"
我得到了一个相当广泛的列表。
而不是这个列表:
/usr/local/var/lib/android-sdk
/usr/local/var/lib/android-sdk/platforms/android-23
/usr/local/var/lib/android-sdk/platforms/android-24
/usr/local/var/lib/android-sdk/platforms/android-25
/usr/local/var/lib/android-sdk/platforms/android-26
/usr/local/var/lib/android-sdk/platforms/android-19
/usr/local/var/lib/android-sdk/platforms/android-28
/usr/local/var/lib/android-sdk/platforms/android-N
/usr/local/var/lib/android-sdk/system-images/android-23
/usr/local/var/lib/android-sdk/system-images/android-19
/usr/local/var/lib/android-sdk/system-images/android-N
...
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid/platforms/android-15
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid/platforms/android-16
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid/platforms/android-18
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid/platforms/android-20
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid/platforms/android-21
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid/platforms/android-19
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid/platforms/android-10
/Library/Frameworks/Xamarin.Android.framework/Versions/5.1.2-1/lib/mandroid/platforms/android-17
Run Code Online (Sandbox Code Playgroud)
我想得到:
/usr/local/var/lib/android-sdk
/Library/Frameworks/Xamarin.Android.framework
Run Code Online (Sandbox Code Playgroud)
如果目录匹配,它不会搜索子目录。
如果您只需要目录:
find . -type d -iname '*android*' -a \( -prune \)
Run Code Online (Sandbox Code Playgroud)
代码注释:
. # Present directory
-type d # Only directories
-iname # Instead of `-name` to also match "Android" (ignore case).
'*android*' # Pattern of name to search
-a # Force the execution of next option on matching names.
# probably redundant as all options are evaluated with an
# implicit and in find
# but: makes the intent explicitly clear.
\( -prune \) # Remove the whole directory from further examination.
# braces also optional (as it is only one command).
Run Code Online (Sandbox Code Playgroud)
简化:
find . -type d -iname '*android*' -prune
Run Code Online (Sandbox Code Playgroud)
如果您还需要文件:
find . -iname '*android*' -a \( -prune \)
Run Code Online (Sandbox Code Playgroud)
警告:这将报告找到的所有文件,然后是目录。不清楚是否找到名为“android”的文件,是否应该避开对应目录。