0

我在窗户上做一些adb shell事情并停留在一个点上。这就是我正在做的事情。我正在打印手机上所有已安装的应用程序并获取它们的确切路径。

zeroltetmo:/ # pm list packages -f 
package:/system/app/FilterProvider/FilterProvider.apk=com.samsung.android.provider.filterprovider
package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
package:/system/app/YouTube/Youtube.apk=com.google.android.youtube
package:/system/app/vsimservice/vsimservice.apk=com.sec.vsimservice
package:/system/priv-app/WallpaperCropper/WallpaperCropper.apk=com.android.wallpapercropper
package:/system/framework/framework-res.apk=android
package:/system/framework/samsung-framework-res/samsung-framework-res.apk=com.samsung.android.framework.res
package:/data/app/com.whatsapp-1/base.apk=com.whatsapp
package:/data/app/ru.meefik.busybox-2/base.apk=ru.meefik.busybox
package:/data/app/com.google.android.play.games-1/base.apk=com.google.android.play.games

但是,我希望它只打印system/app目录,但只打印folder名称而不是完整路径。我正在做的是将其传递给grep并使用此模式来获得结果。

zeroltetmo:/ # pm list packages -f | grep -o "system/app.*\/"
system/app/FilterProvider/
system/app/RootPA/
system/app/YouTube/
system/app/ClipboardSaveService/
system/app/TetheringAutomation/
system/app/GoogleExtShared/
system/app/WfdBroker/
system/app/vsimservice/
system/app/USBSettings/
system/app/EasyOneHand3/

但问题是我坚持使用的文件夹名称末尾的/ 。

4

1 回答 1

0

您可以像这样过滤尾部斜杠sed

pm list packages -f | grep -o "system/app.*/" | sed 's,/$,,'

命令解释sed

s代表替代

,从它的参数中分隔命令名称 -/当我们想要替换时使用不同的东西更容易/

/$- 要替换​​的字符串。在这种情况下,它意味着在行尾的斜线

要替换的字符串/$是空的,因为我们要删除它。

于 2019-09-20T15:11:01.720 回答