Удалить файлы без разрешений (чтение, запись и выполнение)

У меня есть репертуар с именем data с несколькими файлами с разными типами разрешений. Некоторые из них вообще не имеют разрешений, например ---------- .

Я хочу удалять файлы на основе их разрешений. Мне нужно только удалить файлы без разрешений в этой папке и больше ничего. Есть ли одна командная строка, которая поможет мне в этом?

Я пробовал chmod -R 777 data , но это только перезаписывает все разрешения для этого репертория.

0
задан 22 October 2020 в 07:10

1 ответ

В вашем каталоге data вы можете найти список этих файлов и легко удалить их.

Это вернет список файлов, соответствующих схеме разрешений «нет доступа» для файла:

find . -type f -perm 000

(В переводе на понятные термины команда «найти» выполняет поиск в текущем каталоге, в котором вы находитесь . для файлов (тип -f), для которых ваш пользователь, выполняющий поиск, не имеет разрешений)

Добавление -exec rm {} \; в конец может удалить файлы. Однако убедитесь, что файлы, которые вы найдете с помощью первой команды без добавленного аргумента exec, не содержат список файлов, которые необходимо сохранить (например, данные отслеживания репозитория git).

find . -type f -perm 000 -exec rm -f {} \;

... но будьте осторожны, используя рекурсивное удаление, подобное этому, потому что вы можете удалить то, что вам нужно, и это НЕ будет предлагать вам удалить каждый файл — это Я просто сделаю это.

Обратите внимание: если ваш пользователь не является владельцем файлов, вы не сможете удалить файлы, поэтому это будет работать, только если ваш пользователь действительно является владельцем этих файлов.

1
ответ дан 24 October 2020 в 02:28

Другие вопросы по тегам:

Похожие вопросы: