shell - 如何获取可以删除的文件夹列表?

标签 shell file-permissions directory

我可以获得目录中的文件列表:

 ls -v

但是如何仅隔离我有权删除的文件夹的名称?

最佳答案

乍一看,这可能是一个令人惊讶的事实,但特定目录中的所有目录要么都可以被您删除,要么都不能删除。关键是删除(和创建)目录时重要的权限是父目录的权限,而不是您尝试创建/删除本身的目录。您甚至可能不是相关目录的所有者,但仍然可以删除它:

$ 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

关于shell - 如何获取可以删除的文件夹列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9500454/

相关文章:

python - django manage.py 脚本弄乱了目录权限

bash - 何时使用 set -e

python - 如何将列表变量传递给 Python 中的 subprocess.call 命令

读取时出现 Python 权限错误

Python CGI 权限错误

node.js - 如何使用 Node.js 删除非空目录

php - 仅删除 PHP 中的空文件夹和子文件夹

file - SCP 复制错误 : Not a directory

macos - 批量删除文件扩展名 OSX

linux - 使用 shell 脚本从另一个文件检查用户名和密码