Удалить файл, имеющий разрешение на запись в linux - PullRequest
0 голосов
/ 27 января 2020

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

Я пробовал это

    echo "deleting files with write permission"
    for file in [find -perm -222] 
do
 rm $file
 done
   echo "FIles Deleted"

Ответы [ 2 ]

1 голос
/ 27 января 2020

Ваш синтаксис выключен; [ не запускает новую команду, он просто проверяет, является ли ее аргумент непустым.

find сам имеет возможность удалять найденные объекты, поэтому, вероятно, используйте его вместо этого.

find -type f -perm -222 -print -delete

Полагаю, вам нужны только обычные файлы (-type f), хотя -delete также может обрабатывать каталоги. -print вызывает печать файлов перед удалением.

(На самом деле ваш синтаксис просто зацикливается на токенах [find, -perm и -222]; аргументы for просто Если вы хотите выполнить команду там, синтаксис будет for file in $(command ...), но это тоже плохая практика, потому что он сломается, если command выведет имя файла, которое не является единственным токеном.)

0 голосов
/ 27 января 2020

Попробуйте этот код. Если у вас есть проблемы с разрешением, используйте sudo su.

echo "Deleting files with write permission"
for file in $(find -perm -222 -type f)
do
 rm $file
 done
echo "Files Deleted"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...