【发布时间】:2012-03-19 00:25:23
【问题描述】:
我可以得到我目录中的文件列表:
ls -v
但是我怎样才能只隔离我有权删除的文件夹的名称呢?
【问题讨论】:
-
你是要文件夹列表,还是说你有足够权限删除的文件夹列表?这当然是可能的,但它会涉及到你是否可以根据所有用户、组和其他来删除它。如果这就是你想要的,我会想出一个更详细的答案。
标签: shell file-permissions directory
我可以得到我目录中的文件列表:
ls -v
但是我怎样才能只隔离我有权删除的文件夹的名称呢?
【问题讨论】:
标签: shell file-permissions directory
这可能是一个令人惊讶的事实,但特定目录中的所有目录都可以被您删除,或者没有。这样做的关键是删除(和创建)目录时重要的权限是 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!
您可以使用以下 shell 命令测试当前目录的写入权限:
[ -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
【讨论】: