我正在尝试删除所有个文件除只读文件,但是无论如何,此命令会删除所有文件:
yes n | rm *
我做错了吗?如果没有,为什么它不起作用?
答案 0 :(得分:1)
要让rm
自动启用提示用户删除不可写文件的-i
模式,标准输入必须是终端(如手册页中指定)。
因此,为了使命令正常运行,用户必须手动指定-i
选项:
yes n | rm -i *
执行此命令后,该命令将按预期工作。
答案 1 :(得分:0)
在Posix系统中,文件的只读状态不会阻止文件被rm
删除。
您没有说外壳程序是什么,但是也许您有rm
的别名,当文件为只读文件时,确实会要求您确认,而别名{{1}时,别名的行为会有所不同}是管道的一部分。
答案 2 :(得分:0)
问题是您只需要删除文件夹的写权限,而无需删除文件:
任何尝试访问文件数据的操作都需要读取权限。任何试图修改文件数据的操作都需要写许可。任何执行文件(程序或脚本)的尝试都需要执行许可。
在* nix系统中,目录也是文件,因此使用与常规文件相同的权限系统。请注意,分配给目录的权限不会被该目录中的文件继承。
由于目录的使用方式与常规文件不同,因此权限的工作方式略有不同(但仅略有不同)。尝试列出目录中的文件需要对该目录具有读权限,但不需要对该目录中的文件具有读权限。尝试将文件添加到目录,从目录中删除文件或重命名文件都需要对该目录具有写权限,但是(可能令人惊讶地)不需要其中的文件。执行权限不适用于目录(目录也不能是程序)。但是该权限位已用于其他目的的目录。
要查找具有特定权限的文件,您可以使用
find -perm <mode>
要删除找到的文件,可以使用
find . -perm 444 -exec /bin/rm {} \;
(我可能会略有不同,这取决于您搜索的文件和所拥有的系统)