Я хочу получить список всех файлов в моей домашней папке с правами rwx
(чтение-запись-выполнение) или 777 для каждого .
Кроме того, какая команда должна знать права доступа к файлу?
Терминал открывается в Вашем корневом каталоге по умолчанию. Отовсюду еще ввести cd ~
возвратиться к корневому каталогу.
ls -l
покажет Вам полномочия файла вначале, например.
-rwxr-xr-x 1 izx izx 11217428 Oct 2 2011 wkhtmltoimage-amd64
Можно затем отфильтровать с grep для получения желаемого результата:
ls -l | grep -P ".{7}rwx.*"
rwx
который на моих шоу корневого каталога:
-rwxrwxrwx 1 izx izx 0 Jun 15 23:42 sd.png -rwxrwxrwx 1 izx izx 0 Jun 15 23:42 slashdot.png drwxrwxrwx 3 izx izx 4096 Jun 15 21:31 src
В Вашем корневом каталоге ввести find . -perm -a+rwx
rwx
всеми; результаты будут отображены с полными относительными путями, например../.mozilla/firefox/lr5z24b3.default/lock ./src ./src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.so ./src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.la ./src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.so.0 ./src/accountsservice-0.6.15/debian/libaccountsservice-dev/usr/lib/libaccountsservice.so ./src/accountsservice-0.6.15/debian/libaccountsservice0/usr/lib/libaccountsservice.so.0 ./src/accountsservice-0.6.15/debian/tmp/usr/lib/libaccountsservice.so ./src/accountsservice-0.6.15/debian/tmp/usr/lib/libaccountsservice.so.0 ./.pulse/676238f89edd1f57138b3da400000004-runtime ./sd.png ./slashdot.png ./XnView/lib/libQtGui.so.4 ./XnView/lib/libQtWebKit.so.4 ./XnView/lib/libQtXml.so.4 ./XnView/lib/libQtDBus.so.4 ./XnView/lib/libQtNetwork.so.4 ./XnView/lib/libQtCore.so.4 ./XnView/lib/libQtSvg.so.4
Полужирные записи в корневом каталоге также обнаружились в первом методе.
Для большего количества путей на использовании find
для выполнения, что Вы хотите, обратитесь к ответу Eliah Kagan только выше или ниже этого.
Обычно вы используете команду ls
, чтобы узнать о правах доступа к файлам. Но для конкретной задачи, где вы хотите автоматически перечислять файлы с определенными разрешениями, использование ls
, даже если вы фильтруете выходные данные с помощью другой утилиты, такой как grep
, быстро станет очень сложным для правильного выполнения. Поэтому для таких задач лучше использовать find
.
Если вы хотите перечислить все файлы, которые ...
содержали в любом месте вашего домашнего каталога (в том числе в подкаталогах вашего домашнего каталога, подкаталогах этих подкаталогов и т. Д.) И
, которые также могут быть явно читаемыми, записываемыми и исполняемыми всеми
... тогда эта команда сделает это за вас:
find ~ -perm 777
Это действительно это просто.
Если вы хотите отобразить только те файлы, которые удовлетворяют двум вышеуказанным условиям и находятся непосредственно в домашнем каталоге (не внутри какого-либо подкаталога), используйте эту команду:
find ~ -maxdepth 1 -perm 777
В этом случае 777
будет указывать файлы, которые доступны для чтения, записи и выполнения для вас, вашей группы и всех остальных. Если некоторые из файлов могут иметь странные наборы разрешений, например 477 (вы можете прочитать файл, а все остальные могут выполнить и записать файл), вы, вероятно, захотите использовать:
find ~ -maxdepth 1 -perm -o+rwx
Дефис перед -o+rwx
означает, что файл может иметь другие разрешения, а o+rwx
означает, что другие (вне группы и пользователя, которому принадлежит этот файл) могут читать, записывать и выполнять этот файл без проверки каких-либо других разрешений. .
См. man find
для получения подробной информации о том, как выполнять эти и подобные операции, и man chmod
для значения 777
и других числовых режимов. 1130]
Перейдите в каталог, в котором вы хотите узнать права доступа к файлу, с помощью команды:
cd "Directory"
Замените текст в кавычках на нужное имя каталога .
Затем введите другую команду:
ls -l
Эта команда (ls
) обычно используется для получения имен файлов. Аргумент -l
предоставит полную информацию о файлах.
Таким образом, вы также сможете увидеть права доступа к файлу.