使用yes命令对所有问题回答否

问题描述

我正在尝试删除所有个文件只读文件,但是无论如何,此命令会删除所有文件:

yes n | rm *

我做错了吗?如果没有,为什么它不起作用?

解决方法

要让rm自动启用提示用户删除不可写文件的-i模式,标准输入必须是终端(如手册页中指定)。

因此,为了使命令正常运行,用户必须手动指定-i选项:

yes n | rm -i *

执行此命令后,该命令将按预期工作。

,

在Posix系统中,文件的只读状态不会阻止文件被rm删除。

您没有说外壳程序是什么,但是也许您有rm的别名,当文件为只读文件时,确实会要求您确认,而别名{{1}时,别名的行为会有所不同}是管道的一部分。

,

问题是您只需要删除文件夹的写权限,而无需删除文件:

From here

任何尝试访问文件数据的操作都需要读取权限。任何试图修改文件数据的操作都需要写许可。任何执行文件(程序或脚本)的尝试都需要执行许可。

在* nix系统中,目录也是文件,因此使用与常规文件相同的权限系统。请注意,分配给目录的权限不会被该目录中的文件继承。

由于目录的使用方式与常规文件不同,因此权限的工作方式略有不同(但仅略有不同)。尝试列出目录中的文件需要对该目录具有读权限,但不需要对该目录中的文件具有读权限。尝试将文件添加到目录,从目录中删除文件或重命名文件都需要对该目录具有写权限,但是(可能令人惊讶地)不需要其中的文件。执行权限不适用于目录(目录也不能是程序)。但是该权限位已用于其他目的的目录。

要查找具有特定权限的文件,您可以使用

find -perm <mode>

read more

要删除找到的文件,可以使用

 find . -perm 444 -exec /bin/rm {} \;

(我可能会略有不同,这取决于您搜索的文件和所拥有的系统)

more exec examples

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...