Как получить список папок, которые я могу удалить? - PullRequest
2 голосов
/ 29 февраля 2012

Я могу получить список файлов в моем каталоге:

 ls -v

Но как я могу изолировать только имена папок, которые я имею право удалять?

1 Ответ

3 голосов
/ 29 февраля 2012

Поначалу это может показаться неожиданным, но либо все каталоги в определенном каталоге могут быть удалены вами, либо нет. Ключом к этому является то, что разрешения, которые имеют значение при удалении (и создании) каталогов, относятся к каталогу parent , а не к каталогу, который вы пытаетесь создать / удалить самостоятельно. Возможно, вы даже не являетесь владельцем рассматриваемого каталога и все же сможете его удалить:

$ mkdir t9
$ chmod a-rxw t9
$ sudo chown root t9
$ ls -ald t9
d--------- 2 root user 4096 Feb 29 12:10 t9
$ rmdir t9 # no error!

Вы можете проверить права на запись для текущего каталога с помощью следующей команды оболочки:

[ -w . ] && echo "writeable parent directory"

Кстати, для перечисления всех каталогов в текущем $ PWD этого должно хватить:

ls -al | grep ^d

Редактировать: это может быть то, что вам нужно.

#!/bin/bash

for dir in `ls -al | grep ^d | awk '{print $9}'`
do
    [ -w $dir ] && echo "user can write in $dir"
done
...