我正在编写一个 makefile,它将在编译结束时清理一些无用的文件。如果已经创建了一个目标,它当然会跳过该目标,而无用的文件可能不存在。所以如果我这样做:
rm lexer.ml interpparse.ml interpparse.mli
Run Code Online (Sandbox Code Playgroud)
我可能会收到错误,因为其中一个文件不存在。有没有办法告诉rm忽略这些文件?
在阅读手册页时,我看到以下选项:
-f Attempt to remove the files without prompting for confirma-
tion, regardless of the file's permissions. If the file does
not exist, do not display a diagnostic message or modify the
exit status to reflect an error. The -f option overrides any
previous -i options.
Run Code Online (Sandbox Code Playgroud)
这听起来几乎是我想要的,但我不太确定权限部分。有没有办法做到这一点?
我经常想知道如果你运行rm -rf /. 我怀疑操作系统是否能够自行擦除(?)
额外问题:命令执行后,会rm自行删除吗?
更新: 我已经使用 VirtualBox 在几个主要的 unix 发行版中对此进行了测试,答案准确地描述了会发生什么。如果给出正确的参数,rm 将删除磁盘上的每个物理数据位。但是,在使用 rm 版本而不是 GNU 版本时,我遇到了一些问题。例如,我相信 BusyBox 有自己的版本,它不会让您尽可能多地删除。
我需要删除目录中的所有文件,但排除其中一些文件。例如,在包含 files 的目录中a b c ... z,我需要删除除uand之外的所有内容p。是否有捷径可寻?
我有一个我不想命名为“~”的文件夹,所以我从命令行输入
rm -rf ~
Run Code Online (Sandbox Code Playgroud)
并意外删除了我的主文件夹(因为 ~ 解析为 /home/username)。有什么办法可以恢复还是我基本上需要从头开始重新创建帐户?
我有一个这样的目录:
$ ls -l
total 899166
drwxr-xr-x 12 me scicomp 324 Jan 24 13:47 data
-rw-r--r-- 1 me scicomp 84188 Jan 24 13:47 lod-thin-1.000000-0.010000-0.030000.rda
drwxr-xr-x 2 me scicomp 808 Jan 24 13:47 log
lrwxrwxrwx 1 me scicomp 17 Jan 25 09:41 msg -> /home/me/msg
Run Code Online (Sandbox Code Playgroud)
我想使用rm -r.
但是我害怕rm -r会遵循符号链接并删除该目录中的所有内容(这非常糟糕)。
我在手册页中找不到任何关于此的内容。rm -rf从上面的目录运行的确切行为是什么?
偶然地,我使用rm了一个我不想删除的文件。有什么方法可以让我在 Linux 下恢复它?
我在某个时候做了一些疯狂的事情,-rf在我的文件系统上创建了一个文件。
现在不知道怎么删了。。。
我试过了:
rm "-rf"
rm \-rf
Run Code Online (Sandbox Code Playgroud)
这些只是立即退出,啊!
有谁知道怎么删除这个文件?最好不要意外清理我的整个文件夹。
我试图删除以 A 开头并以 2 个数字结尾的文件,但它没有做任何事情。
我试过的:
rm ^A*[0..9]2$
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
我尝试使用“rm -rf”删除目录,但收到消息“目录不为空”:
Bens-MacBook-Pro:please benjaminhocking$ ls -lart empty_directory/
total 16
drwxr-xr-x 5 benjaminhocking staff 170 Aug 27 14:46 .
drwxr-xr-x 3 benjaminhocking staff 102 Aug 27 15:28 ..
Bens-MacBook-Pro:please benjaminhocking$ rm -rf empty_directory/
rm: empty_directory/: Directory not empty
Bens-MacBook-Pro:please benjaminhocking$ rmdir empty_directory/
rmdir: empty_directory/: Directory not empty
Run Code Online (Sandbox Code Playgroud)
如果我使用 Finder 尝试同样的事情(将文件夹拖到废纸篓),我会收到消息
操作无法完成,因为项目“empty_directory”正在使用中。
我试过这样做xattr -d com.apple.quarantine,纯粹是出于迷信,但没有任何好处。
一个可能重要的上下文是,该目录最初位于一个目录中,该目录应该由我在终端锁定我之前发出的“make clean”命令删除,之后我拥有的其他程序的一半多一点运行也被锁定,包括 Skype,最终是操作系统本身。我最终不得不通过按住电源键重新启动计算机。
编辑添加:我遗漏的另一条重要信息是,这发生在一个加密文件夹 à la 中encfs。我能够在事物的加密方面找到相应的文件夹并将其删除。我仍然不知道为什么我不能像往常一样从解密的方面做到这一点。我暂时不回答这个问题,以防有人对此有一个好的答案。
我有几个文件无法使用rf -Rf命令删除。我是这些文件的所有者,分配给这些文件的组也是我的用户所在的组。更奇怪的是我可以编辑他们的内容,我可以更改他们的权限,但我不能移动或删除它们。
ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760 0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760 0 2011-09-02 06:38 settings.php
rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied
Run Code Online (Sandbox Code Playgroud)
谁能告诉我发生了什么?