我错误地在创建许多 c 程序文件的当前目录上运行了 rm * 。我从早上就一直在研究这些。现在我不能再抽出从早上开始创建文件的时间了。请问如何恢复。他们也不在回收站!
这个问题是我在这里发布的第一个问题的第二阶段
我有一个目录,其中包含一堆子目录、.zip 文件和子目录中未包含的其他随机文件。
我想要一个命令行脚本来从父目录中删除所有子目录,但保留所有 zip 文件和不属于任何子目录的松散文件。所有子目录都有内容,所以我相信我需要使用 -f 命令强制删除它们。
因此,基本上,一个查看父目录(或当前目录)内部的命令会删除其中的所有文件夹,但保留所有不是文件夹或包含在文件夹中的其他内容和文件。
我知道从命令行删除项目需要特别小心,但我已经采取了所有必要的预防措施来远程备份。
我正在将一台机器从 RHEL 4 迁移到 5。我们没有进行实际升级,而是创建了一个新的 VM(两台机器都在云中),我正在两者之间复制数据。
我遇到了以下文件,我需要将其从新机器中删除,但无法删除,即使以 root 身份运行:
-rw------- 1 2003 2003 219 jan 11 14:22 .bash_history
Run Code Online (Sandbox Code Playgroud)
该文件位于 /home/USER/ 中,其中 USER 是构建机器的人的帐户。他在旧机器上没有帐户,所以我试图删除他的主文件夹,以便新机器与旧机器相符,但出现以下错误:
rm: ne peut enlever `.bash_history': Opération non permise
Run Code Online (Sandbox Code Playgroud)
(法文翻译:不能删除XXX,不允许操作)
我曾尝试使用以下命令,但这没有任何区别:
chattr -i .bash_history
Run Code Online (Sandbox Code Playgroud)
是创建 ID 为 2003 的用户的唯一选择,还是有其他解决方法?
我试过使用rm -f
,我得到了同样的错误。我chmod 777
首先使用相同类型的错误。
我已经能够访问chown
包含我要删除的文件的文件夹,所以它是:
drwx------ 2 root root 1024 jan 24 15:58 USER
Run Code Online (Sandbox Code Playgroud)
lsattr
按照 Angus 的建议运行命令给出了以下输出:
-----a------- USER/.bash_history
------------- USER/..
------------- USER/.
Run Code Online (Sandbox Code Playgroud)
该文件被标记为仅附加 - 在使用更改此标志时,chattr -a .bash_history
我能够删除该文件。
我整理了一个脚本来为我做一些文件操作。我正在使用通配符运算符*
将函数应用于一种类型的所有文件,但有一件事情我不明白。我可以unzip
像这样的文件夹中的所有文件
unzip "*".zip
Run Code Online (Sandbox Code Playgroud)
但是,之后要删除所有 zip 文件,我需要执行
rm *.zip
Run Code Online (Sandbox Code Playgroud)
也就是说,它不需要引号。另一方面,如果我只是给它*(给我一个“文件不匹配”的警告),解压缩将不起作用。
为什么这是不同的?对我来说,这似乎是完全相同的操作。还是我错误地使用了通配符?
Unix 中通配符的介绍并没有真正涉及到这一点,我在rm
或zip
文档中找不到任何内容。
我在 Mac (Yosemite) 上使用终端。
是否有一个 Linux 脚本/应用程序,而不是删除文件,而是将它们移动到一个特殊的“垃圾”位置?我想用它来代替rm
(甚至可能是后者的别名;这样做有利有弊)。
“垃圾”是指一个特殊的文件夹。单个mv $* ~/.trash
是第一步,但理想情况下,这还应该处理多个同名文件的垃圾处理,而不会覆盖旧的垃圾文件,并允许使用简单的命令(一种“撤消”)将文件恢复到其原始位置。此外,如果在重新启动时自动清空垃圾(或防止无休止增长的类似机制),那就太好了。
存在针对此问题的部分解决方案,但“恢复”操作尤其重要。是否有任何现有的解决方案不依赖图形外壳中的垃圾系统?
(顺便说一句,这种方法是否合理,而不是使用频繁的备份和 VCS 是否合理,一直存在无休止的讨论。虽然这些讨论有一定的意义,但我相信我的要求仍然存在。)
使用命令:
ls -la *
Run Code Online (Sandbox Code Playgroud)
我可以列出我所有的符号链接。
如何删除链接到特殊文件夹的所有符号链接?
例如:
在我的目录中,usr/local/bin
我有以下条目:
lrwxrwxrwx 1 root root 50 Apr 22 14:52 allneeded -> /usr/local/texlive/2011/bin/x86_64-linux/allneeded
lrwxrwxrwx 1 root root 47 Apr 22 14:52 amstex -> /usr/local/texlive/2011/bin/x86_64-linux/amstex
lrwxrwxrwx 1 root root 24 Apr 23 19:09 arara -> /home/marco/.arara/arara
Run Code Online (Sandbox Code Playgroud)
现在我想删除所有带有路径的链接 /usr/local/texlive/
该表达式.*
由 bash 扩展以包括当前和父目录:
$ ls -la
total 2600
drwxrwxrwx 2 terdon terdon 2162688 Sep 10 16:22 .
drwxr-xr-x 142 terdon terdon 491520 Sep 10 15:34 ..
-rw-r--r-- 1 terdon terdon 0 Sep 10 16:22 foo
$ echo .*
. ..
Run Code Online (Sandbox Code Playgroud)
如果我rm -rf .*
使用 GNU bash 在我的 Debian 上运行,version 4.2.36(1)-release
并且rm
从rm (GNU coreutils) 8.13
,我会收到以下消息:
$ rm -rf .*
rm: cannot remove directory: `.'
rm: cannot remove directory: `..'
Run Code Online (Sandbox Code Playgroud)
这是 GNU 的东西还是 POSIX?是否有任何 …
我有一个目录树,我想用 Linux 'shred' 实用程序对其进行粉碎。不幸的是,shred 没有-R
递归粉碎的选项。
如何递归地粉碎整个目录树?
我正在尝试将grep
输出通过管道传输到rm
,但它输出了无用的东西。是否需要任何开关rm
?或者可以rm
直接提供正则表达式?
ls | grep '^\[Daruchini'| rm
Run Code Online (Sandbox Code Playgroud)
rm: 缺少操作数 尝试 `rm --help' 了解更多信息。
来自帖子为什么 rm 可以删除只读文件?我明白那个rm
只需要对目录的写权限即可删除文件。但是我发现很难消化我们可以轻松删除所有者和分组不同的文件的行为。
我尝试了以下
mtk : 我的用户名
abc : 创建了一个新用户
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Run Code Online (Sandbox Code Playgroud)
我在想这不应该被允许。用户应该只能删除其所有权下的文件吗?有人可以解释为什么允许这样做吗?避免这种情况的方法是什么?我可以认为只限制父目录的写权限以禁止意外删除文件。