Should you ever decide to go with a command-line way, you can do

<sub>(**Note:** you would need a *nix system, [adb](http://android.stackexchange.com/questions/tagged/adb) setup in PC and device connected to it in [debugging mode](https://android.stackexchange.com/tags/usb-debugging/info).)</sub>

<pre>
adb shell dumpsys package | awk -v RS='\n +Package' '/android\.permission\.CAMERA/{print $1}' | sed -e 's/\[//g' -e 's/\]//g' -e 's/Verifiers\://g' | tail -n +2 | tr -d '\r' | while read line; do adb shell pm path $line | sed -e 's/package\://g' | tr -d '\r' | xargs -0 adb shell aapt d badging | grep "application: label" | awk -F "'" '{print($2)}'; done;
</pre>


* `dumpsys package`: list all the installed packages with their info
* `awk`: finds the permission (mentioned  in the command) in the output of previous command and list the APK's path corresponding to the permission ([originally](http://unix.stackexchange.com/q/228690/105083), by muru)
* `sed`, `tail` and `tr`: does some cleaning of bits and pieces of last output
* `while` and `do`: `while` reads each line from the output and `do` executes the further task. The further task involves passing APK's path to `aapt` and extract the label of the app from the followed output. 
* `xargs`: because adb disregards standard input stream so this would help in piping the input

 (I'm using [*aapt* binary for Android](http://android.izzysoft.de/downloads), hence used `adb shell` in prefix. For PC, download [Android SDK](http://developer.android.com/sdk/index.html).)

Dummy output of the command

<pre>AirDroid
Camera
Elixir
Google Search
DS Battery Saver Pro
GravityBox
Search Light
Barcode Scanner
Droid Automation
Google+
Android Live Wallpapers
WeLine
FreeOTP
MacroDroid
Gallery
Tasker
Webkey
Mobileuncle Tools
Talk
System UI
YouTube
Face Unlock
Chrome
Google Play services
</pre>

Use this command to remove those apps in bulk 

<pre>adb shell dumpsys package | awk -v RS='\n +Package' '/android\.permission\.CAMERA/{print $1}' | sed -e 's/\[//g' -e 's/\]//g' -e 's/Verifiers\://g' | tail -n +2 | tr -d '\r' | while read line; do adb shell pm uninstall $line; done;</pre>

or 
<pre>adb shell dumpsys package | awk -v RS='\n +Package' '/android\.permission\.CAMERA/{print $1}' | sed -e 's/\[//g' -e 's/\]//g' -e 's/Verifiers\://g' | tail -n +2 | tr -d '\r' | while read line; do adb uninstall $line; done;</pre>

For Windows users, [this answer](https://android.stackexchange.com/a/123148/96277) by Lucky may help.


---

#For rooted devices specifically 

The following command would display the App info page of the apps having the permission `android.permission.CAMERA`

<pre>adb shell dumpsys package | awk -v RS='\n +Package' '/android\.permission\.CAMERA/{print $1}' | sed -e 's/\[//g' -e 's/\]//g' -e 's/Verifiers\://g' | tail -n +2 | tr -d '\r' | while read line; do adb shell su -c am start -d "package:$line" -n com.android.settings/.applications.InstalledAppDetails -activity-multiple-task; sleep 1.5; done</pre>

Alternatively, as the device is rooted, you need not to have a PC to get the things done. You can use a terminal emulator app and use these commands

<sub>(*adb shell* prefix removed, *su* added to gain superuser privileges)</sub>

<pre>su
dumpsys package | awk -v RS='\n +Package' '/android\.permission\.CAMERA/{print $1}' | sed -e 's/\[//g' -e 's/\]//g' -e 's/Verifiers\://g' | tail -n +2 | tr -d '\r' | while read line; do am start -d "package:$line" -n com.android.settings/.applications.InstalledAppDetails --activity-multiple-task; sleep 1.5; done</pre>


The command is pretty much similar with the one used in non-root section, except these parts:

* `am`: activity manager; launches the Settings app's activity named `.applications.InstalledAppDetails` here
* `-d`: next to it is the data passed to the activity; package name in this case
* `-n`: to specify app component
*  `-activity-multiple-task`: [a flag](http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_MULTIPLE_TASK); used it because no other flag suits the purpose 
* `sleep`: to wait before execution of next set of command; used because Settings apps may crash due to excessive requests in a short span

The flag used here is very important. It is because of that every App info page for an app would be shown as a new task for the same activity. ***In essence,  App Info page for every app having the Camera permission can be accessed under the Recent activities and once you close the App Info page of an app using the Back button, the App Info page for an other app would show up because they were consecutively opened.*** 

In this way, you can review the app having the Camera permission and take the actions on it, be it Uninstall or Disable. 

---

**Root only**: If you've [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm) installed, you can have it to show notification for each of the app having the said permission and each notification can be made to open an App info page. 

Try it because that's fun and very easy to do!